ActionScript 3.0 :: [flash Cs4] - Swc And Code Execution - Stop() Commands Don't Get Executed?
Sep 23, 2009
I'm trying this:
- create some asset in library, export for as in frame 1
- export an assets.swc, and set the relative library path publish option in othes flas that use assets.swc
- Then, there's a Main.as document class that uses other classes tha use the assets in assets.swc
Problems start when some asset has some code inside. Say, a button with stopped event states. Well, the stop() commands don't get executed, so the buttons are effectively instantiated, but their timeline plays until the end. Probably because they're not initialized in the timeline (being exported in frame 1, so, in fact, before).Usually, without swc, to solve this problem one would put all assets in frame 2 and then check for cuttentFrame == 3 (http:url...). This is what I'd really like to avoid. And from here the question: is that possible? Is there a way (in flash, not flax) to use swc to properly get assets containing some simple code (usually stop commands) in their timeline?
I have an issue in which outdated code removed long ago code in an actionscript 2 class sometimes gets executed. I can tell this in that the application fails and trace statements removed long ago gets logged to a console.The closest match I've come across is this post:Flash CS4 refuses to let goHere are the things I've triedI hI have searched an uncompressed debug-enabled version for the trace entry. It is not there.I have decompiled the compiled version and searched that. It is not there.I ave deleted all ASO files and tried to recompile.I have not been able to reliably reproduce the conditions in which the situation arises.I've testet 700 times in a row (yes - sevenhundred times - this is a high profile project) and it would not occur. Then tested another time and it occured. No difference in my approach to testing.I have compiled on another, freshly installed machine. No difference.I have ruled out that it may relate to timestamps since I've tried to compile locally and w/o version control.
I want to be able to throw an error to be traced to the trace output window and to my flashlog.txt file but continue code execution after the error. Is this possible in Actionscript 3? A try catch will not work either because I need the error to be logged with its call stack.
I am using a while() loop which does its job as soon as I fetch CDATA content from XML. The while() loop basically contains text conversions using replaceText()... Depending on the number of user defined XML nodes, the while loop executes. I see that the flash application hangs for 3 or 4 seconds when this execution happens.
as simple as it gets, right? Wrong, the preloader works however is get this error 1087: Syntax error: extra characters found after end of program. The preloader it self works it plays and when the movie is loaded it begins the movie, however the movie doesnt stop at any of my stop commands and keeps looping through itself over and over again till i exit the window.
Was testing out my movie and using the simulate download option. Bored while waiting I started to resize the movie. Then I got an error about over 256 levels of recursion. Intrigued I tried to simulate the error again. I realized that it would only happen when I resized the movie a bunch while it was doing simulate download. Sometimes I would also get an error "A with action canceled because object didn't exist".
Digging through the code I couldn't figure it out. On the first frame of my movie all I had was a setInterval that changes the loadbar display to show how much is loading. It also tells it to stop(). Once loaded it tells it to gotoAndPlay(5). Frame 5 is where all of my other code is at. This error was happening at Frame 1? Then I remembered I had used "with" in some code to realign stuff on resize. Like:
[Code]....
As soon as I commented out the stagelistener stuff the error stopped. The stage code is on frame 5. It should not start running until the movie has loaded as frame 1 stops the movie until it is loaded. It is running BEFORE the movie is loaded though because I get the "with action" error and the 256 levels of recursion error. If I put a trace in the listener function it doesn't trace back until it is at frame 5, but for some reason part of it still runs. Anyway, sorry for the long explain...just a strange, strange error. Now I don't know what to do about it. I want the stage listener, but I definitely don't want an endless loop or other errors occurring.
I wonder if there is any way to view the Actionscript that is exectued when executing a fla file. Or maybe a tool that would allow me to generate Actionscript through a graphical interface.For example, I create a Flash File and draw a circle.
I have some code on the main time line which basicially just says when this button is pressed go to this frame indicated by the frame label. In this case "answer". This is done inside a movie clip, which isn't on the main time line.
Let's say I have some code like this in AS3.[code]The constructor for Thing is going to cause a swf to be rendered onto some movieclip.If the loop is run 10 times or so, most of the time I will only end up with a subset of Things showing up on the clip. I'm guessing this is a problem that flash is having loading a bunch of Things at the same time.I've been able to solve this problem by passing callbacks to the Thing constructor, and only continuing the loop once the previous Thing is completely loaded and calls back.First of all, is this a known problem? Or am I going about this in the wrong way? Secondly, is there any way I can tell flash/as to run this code in a linear fashion without the callbacks? It gets kind of annoying doing this everywhere.So I think richardolsson is right, we must be doing something wrong. To restate the problem, if I try to load multiple swfs onto the stage, even as few as two or three, without waiting for the previous one to finish loading, I will get an unpredictalbe number loaded. For example, running the loop above 10 times, I may end up getting the 2nd, 5th and 10th Things loaded. The others seemingly getting lost in asynchronousity. Flash shows no runtime errors in these situations. So here's the basic idea of how we are doing things.[code]This is the basic scheme. If I try to create a bunch of instances of 'child' WITHOUT waiting for the onLoaded function to finish on the previous 'child', random instances simply won't show up. I wrote the above code very quickly, it is not compy/paste, so ignore simple errors. Are there any glaring reasons why the above method does not work?
I verified that the installApp function is executed.Why doesn't the second piece of code work? Is user interaction required? If so what's a way around this?
I have written a small bit of actionscript code which is designed so that small objects fly across a window from left to right at varying speeds, and then get moved back again with different attributes once they reach the right edge. The code is fully functional.My problem is that this eats a huge amount of system resources, and runs slowly on a 1Ghz machine. Is there a more efficient way to achieve this?
//Frame 1 Code - create 20 objects of varying scale, x/y position and alpha.
dcount = 1; dupcount = 20; while (dcount<=dupcount) {[code]......
How would I pause the execution of code? In Python it would beCode:pause(number of seconds)but I have no idea how to do this in AS3. I don't want to pause the frame, only the execution of the code.
I am trying to delay the execution of the code within a function. But it is not working. I would like content of the doTour() function execute 25 seconds of interval.
Is there a way to measure the average time it takes my code to run and each frame to render for my Flex app? More specifically, I know how to use getTimer() but I'm not sure about which events I should listen to in order to do this. I was reading this post and am not sure how you'd figure out how long the actual rendering took (it would seem like it may be the time between the RENDER event fires and the next ENTER_FRAME event fires, but I'm not sure). Also, not exactly sure where the user code happens, or whether I should care about EXIT_FRAME and FRAME_CONSTRUCTED. [code]...
I am trying to set a couple of _global variables with if-then statement, and just after this, use these _globals in the code. However, the code moves on before the _globals are properly set. How can I make the code wait (no timers, please) until the _globals are set?
The following code is on a movieclip being used as a button.The code is pretty simple. Originally the code was just the code after the gap. This code loaded up a movieclip (filtermc) off-stage that runs through an xml file and preloads a form. This takes a second or two, and when finished that newly loaded movie tweens into position. The tween code is on a frame in the 'filtermc' movieclip.
The problem is that in the second or two that it takes for this movie to load, people could click the button a second time which messes up the form/movieclip (everything on it is unresponsive, I think because two movieclips having the same name)
Anyway, I decided to solve this problem by loading a transparent blocker movieclilp in front of this button to keep it from being double clicked. This blocker clip is just a movie that has an empty onRelease function in it so that the button below it cannot receive any new clicks. Also, the button goes to another frame where it says "loading..." to provide feedback to the user.
The Problem When I click this button, there is a delay of about 2 seconds before the semitransparent (for testing) blocker appears. In fact it appears just as the filtermc clip has started it's tween into place.
It is almost like this code is running out of order. The traces come back in the correct order so I know it is not running out of order, but why the 2 second delay before the blocker movie gets loaded up? The button also takes 2 seconds to show the "loading" frame. The traces also have the same 2 second delay.
If I comment out the second half of the code (the filtermc part) then the blocker movieclip pops up instantly and the button changes frame instantly.
PHP Code:
on (release) { //problems occur if button is pressed twice before filtermc scrolls into view //this button must be disabled until the filtermc finishes loading
I try to execute a code on my Stage, the problem is when I declare my own class on which they load the file (xml) the code start in the background.I tried to add a listener in the custom class for Event.COMPLETE but it doesn't work because it only affect the custom class, not the whole movie.I tried something like this:
Code: var xmlLoad: XMLLoadData = new XMLLoadData("navigation.xml"); var menuBox:MenuBox = new MenuBox();
I have this complex XML processing code that builds up thousands of objects on stage. This might take some time. Perhaps not that big time to bring up that message about slow code execution, however signifficant enough to cause interface uncomfortabilities. I understand very well that I can restructure my code in order to save all contextual variables, all counters in an object that is passed down to onEnterFrame events that process it a little bit and then pass it further, until the job is done. However, before I go into dissecting my code, I wanted to make sure if there really is not a way how tom tell flash player do it's frame rendering routine while a complex code is executed in background (without splitting it up).
I try to execute a code on my Stage, the problem is when I declare my own class on which they load the file (xml) the code start in the background.
I tried to add a listener in the custom class for Event.COMPLETE but it doesn't work because it only affect the custom class, not the whole movie.[code]...
I have created an image gallery where each "slide" is an image loaded by one UILoader component. Everything works, except I noticed that as a user it is annoying to wait for each new slide to load.So, even with my limited knowledge of AS3, I decided to figure out a way to load the next upcoming image before the user requests itone for odd numbered slides, one for even numbered slides. That way, when the user is viewing a slide with an odd number in the first loader, the next image can be loaded into the second (currently invisible) loader and ready to go when requested button would simply toggle the visibility of these two loaders.
function nextButton(event:MouseEvent):void { imageNumber++;
obviously there are several layers on there too, and on them there are Three buttons which I want to click on to get to each of the three frames. But every time I follow a tutorial nothing seems to work.I have taken out all the script that the various tutorials have told me to enter and only have two stop commands for two Movie Clips that are also on the stage.If I give you the following information could someone please write the script for the three buttons to link to frame 1,2&3
I have a simple Flash movie, and have used AS3 to allow users to hit the up arrow and go to a certain frame, then hit the right arrow to go to another specific frame. My problem is the minute I put in "stop();" in the script so my movie stops on frame 1, the keyboard controls do not work unless I double-click the playing video. The minute I remove the stop command from my actionscript, the keyboard controls work perfectly...but my movie obviously starts playing which I do not want.
I need both the stop command AND the keyboard controls, and am at a loss.
I've got 13 movieclips that all run a function (setNames) contained in a child object (namer) it contains. The function displays text in a dynamic text boxI've set them up with the instance names mark0 > mark12 so I can target them with a loop and array notation which is something I often use. But the loop sometimes doesn't work, however a list of 13 separate lines of code works fine. Am I overloading Flash with too much code commands at once, and is there a way around this?This doesn't work...
ive recently introduced myself to AS3, its starting to get a bit frustrating. it seems that when i put the preloader actions in the timeline, everything is fine, the stop(); commands work fine. BUT when it comes around to adding the navigation to the timeline as well (ive tried putting the code on a separate keyframe, ive tried various styles of code) the stop(); actions are completely ignored.
I am trying to dispatch an event but not sure when I should do it to get the right results. The first event "submitClicked" is in the right spot and works great. However, the second event "dataReady" seems like it might be a problem. I need it to be dispatched after this.compiledFormData is set.Does AS3 wait for each line of code in a function to be executed before moving on to the next line?
// -------------------------------------------------------------------- public function submitForm() {
Visual Studio had a command "showDialog()" which allowed you to show your form as a dialog box on the screen. The advantage to this was that the code calling the dialog box would pause, stopping execution entirely until the dialog box closed. The benefit was you could write your code as follows (made "actionscriptey"):
Code: var result:DialogResult = form1.showDialog(); if (result == DialogResult.OK)