ActionScript 3.0 :: Have A Loaded Swf Detect That It Is Being Removed From The Stage?
May 1, 2011
In the past, using Flash CS3 when I needed to remove timers or event listeners from a swf that had been loaded into a parent swf I'd use this inside the loaded swf:
Code:
this.addEventListener(Event.REMOVED_FROM_STAGE, deactivate, false, 0, true);
function deactivate(e:Event):void
{
[code]....
Now that I've upgraded to CS5 and am outputting to Flash Player 10 this no longer seems to work. The event fires right away. Does anyone know why this might be and if there's an alternative that I can use?I tried the unloadAndStop() method in the parent swf but I'm trying to remove some TweenMax delay timers and it doesn't seem to be working.
In the past, using Flash CS3 when I needed to remove timers or event listeners from a swf that had been loaded into a parent swf I'd use this inside the loaded swf:
Code: this.addEventListener(Event.REMOVED_FROM_STAGE, deactivate, false, 0, true); function deactivate(e:Event):void
I have a main swf that I load external swfs onto the stage. I am trying to fix the loading order. Currently when a button is pressed, the swf is preloaded, the current swf is on the stage with the preloader showing, then the preloader disappears and the swf plays the outro transition.
how to change the order so that currently loaded swf is removed from the stage, show the preloader and then show the new swf.
if i have a movie clip with an even listener attached to it, is the event listener being removed automatically when the movie clip is removed from the stage or should i always remove the event listeners manually?
I am sorry if this is a truly basic question, but how would I code as3 to remove an event listener when the current frame (in my case, section of my site) is no longer on the stage?ke the following code as an example:
function onClick(event:MouseEvent):void { doSomething();
When bullets hit the wall of multi-colored blocks, when shot one by one, they disappear like they should. But if you hold down the Left Mouse Button, you will see that bullets stop in mid-travel and I can't figure out how to fix that. See this occur in this SWF. Note:(Use A & D to move left to right, Z to add a new row, and Left Click to shoot)
Here's the important function in the Bullet class.
Code: public function update():void { if(global == null){ trace("Global es null.");
I've noticed that using stage.addChild(obj)(i.e. creating objects on the fly) can slow down frame rates.I was told by several sources that one way to speed up a flash game engine (or any animation where instances are generated as you progress), is to reuse objects in what is known as object pooling.
First of all a bit of background:The game engine I'm working on can be found at: http:[url]....Most objects (i.e. bullets, particles, enemies...) are exported for actionscript, each with a set of actions that are performed each frame, and another set of actions upon being created.Each class has an array called instanceList, which keeps track of all objects currently within play.The main timeline contains an event.ENTER_FRAME function mainActions(event:Event):void, that loops through each of the instances and performs the actions associated wit11h each.It goes through each instance of each class by going through the static array instanceList().
Now what I plan to do is:Have a seperate static array for each class, called inactiveInstances,which keeps track of deleted objects.Introduce a function for adding the objects back to the stage (with the nesscessary variables reset), to give the impression of a new object being created.When objects are destroyed:Should they be removed from the stage and readded latter e.g. removeChild(obj2)/addChild(obj1)? e.g.
Code: public function instance_destroy() { parent.removeChild(this) //Remove all refferences and listeners[code].....
The REMOVED_FROM_STAGE event is fired before the object is actually removed from the stage. I'm looking for a performant way to know when the object is finally removed.
I want to remove all children of the name (mc1) but be able to add new one when I call the add function again Heres what I have
// Draws the squares
Code: function drawIt(e:Event=null):void{ mc1.graphics.lineStyle(1); mc1.graphics.beginFill(ITsColor);
[code]....
Removing all the (mc1) movieclips works fine, but when i click on the butotn to call drawIt again, all previous mc1's are displayed again with the new ones
I have two FLV files playing on the stage. The main FLV is instance is: MyVideothe 2nd is MyVideo2I have imported the videos using the wizard. The 2nd video is just a movie I created in Affter Effects that says...loading please wait....this is a really nice video and I don't want it to just use a standard preloader. Anyway, the goal is when the playback for "MyVideo" begins I would like "Myvideo2" to = visible = false;I have tried this many different ways and have been unsuccessful. I am obviously a newb at this. Also, does anyone know where I can get a list of all available eventListener actions...etc?
//var nc:NetConnection = new NetConnection(); //connection_nc.connect(); //var stream_ns:NetStream = new NetStream(connection_nc);
I have ran into another problem, I have written the code for when I click on an enemy, it doesnt add a point to the score and it doesn't remove the enemy, I have a textfield which is called messageDisplay which is linked to the clickEnemy function.Here is the piece of code.
I am working in on a Flex / Air application (using PureMVC) written virtually entirely in ActionScript 3 (i.e. we use very little of Flex). View components are added to a Canvas object in the main application window and these Views then load other movie clips, images files, etc.When I remove a View from the stage, I do so using application.canvas.removeChild(). This fires an event in my PureMVC mediator for that View, which removes any event listeners that were set up and everything appears to be dandy.However, the movie clips are still playing in the background. They are not causing any trouble on screen but they are simply there, playing somewhere in memory (e.g. I can see trace statements from them) and I want them gone. I suspect the View that was removed from the Canvas is still there too, but I can't prove it.
Setting the View to null doesn't do anything. I'm surprised that AS3 doesn't include any method to simply and effectively destroy a Display Object and all of its children.Is the only way to do this to tediously unload all of the movie clips, etc. and then hope that Flash will clean them up?
I was told that if you load a new SWF into a loader that has an existing SWF that the second SWF will replace the object(the first SWF) in the loader and in the display list.Does this mean that the first SWF is removed from the stage once the second SWF is loaded? I am asking because I would like to know if my this.addEventListener(Event.REMOVED_FROM_STAGE, removedFromStageHandler1); in the first SWF will fire once the second SWF is loaded.
I was told that if you load a new SWF into a loader that has an existing SWF that the second SWF will replace the object(the first SWF) in the loader and in the display list.
Does this mean that the first SWF is removed from the stage once the second SWF is loaded? I am asking because I would like to know if my this.addEventListener(Event.REMOVED_FROM_STAGE, removedFromStageHandler1); in the first SWF will fire once the second SWF is loaded.
In the setOne_mc I have three buttons close_btn, min_btn and max_btn....I want the movie clip to be removed from the stage if close is released.I seem not to be conecting with the buttons...the clip appears on the screen.
I have a website [URL] when I go there if I click the video archives button then play a video then click on the home or photos button or one of the alternate background buttons on the left the video goes away as it should but not always the audio (especially when I click while the video is still buffering). Is there a command I can use to kill the sound from the flvPlayback component and nothing else(I have a mp3 player there also I so I don't want to use the SoundMatrix class. btw the videos are all played on an instance of the flvPlayback component.
I have an external transparent swf loading in to my movie. The swf has to be imported over a button element on stage. The swf plays for a few seconds than it appears to go off-stage... at which point I need to free up that button to be clicked.
So, I need to detect when that movie has finished playing and then unload.
I can't get my head around this. I know there's a clever way to do this but none of my ideas seem to be the solution. I'd like to dispatch an event when there are no more items to be loaded. I'm working with Drupal and AMFPHP and loading some nodes. The number of nodes may vary from day to day so I need a way to know when the last one has loaded.
In the code below, I am building an array to use elsewhere in the application. Once all nodes have finished loading I'd like to know what the final length of portfolioItems is.
I have a main swf that will load external swfs into a container. I need to detect the end of the loaded external swf in order to start to load and play a new one into the same container. The problem is that i do not know what the length of the external swfs will be, and will have no control over the development of them, so i cannot place a variable at the end of their animation which would allow me to detect from the main movie its end. I also cannot rely on the _totalFrames property because the loaded swf might not have all the animation inside its main timeline.
So I'm trying to detect if a variable has been changed by a swf loaded into another swf.What I'm doing is when a thumbnail is clicked on the child swf I want it to fire a function on the main swf. I can get the model to trace out when the value was changed inside of the child swf by itself but when i load it into the main swf I can't get the onModelChanged event to fire off.Container swf as
what Actionscript to put in a movie to detect whether that movie has been loaded into another movieclip?
In case that isn't clear: movie A loads movie B into a myMovieClip. What code can I put in movie B to detect that it is now a child of myMovieClip, or indeed any movie?
Is there a way to check the method that has been attached to the stage?I have stage as global.. and need to fire some function in a object on mouseup...Now it fires 2 or 3 depending how many objects i add..I need something like..
i am making a simple "tank-type" game in flash using Actionscript 3..the gun rotates according to the where the mouse is and it also fires bullets (which are movieclips dynamically added from the library)...i would like to know the simplest way of detecting if the bullets are already outside the stage so i can call removeChild and remove them...
- A.fla includes buttons, movie clips and also B.swf is loaded in A.fla using a LOADER
- i want to access elements in A.fla, from the actionscript codes inside B.fla to modify those movie clips and buttons based on actions going on in B.swf
for instance, lets say there is a button X in A.fla, and there is a button Y in B.fla, B.swf is loaded into A.fla, and I want the button Y to erase button X when clicked.
general question: accessing elements in a stage, through a SWF file loaded into that stage.
Is there a script that checks if the flash is loaded from a local drive?Example: Keric opens a flash file. The script then checks if the file is being played from a local drive. If it's not, ads will be displayed.Something like a domain lock. Uhm, local drive lock?