ActionScript 3.0 :: Remove Children For Faster Running?
Nov 30, 2009
I have a set of swfs that open one on top of the previous as buttons are pressed. Thing is, once you've pressed buttons so many times that there are a ton of swfs on top of one another, the browser begins to run slower.
Is there anyway to remove all the swfs under the current swf in the code without disrupting the running of the current swf?
I have seen a few blog entries on this and have had a discussion or two with my team mates but I would like to see what the stack overflow community thinks.
So why does the Adobe Alchemy Tool create so much faster running flash byte code than the flex compiler?
Also, when will the flex compiler be able to make similar performance gains? Will it require programmer specific use of special Array's or something of that nature to get the same performance?
Just wondered if I remove a parent movieclip and then set it to null, will it remove all the child movieclips within it from the Display list and also from memory, or do I need to iterate through the parent movieclip removing all its children before removing the parent?
My question is, does a better, faster CPU necessarily equal faster SWF compile times? Or does it rely on something else (OS, memory, etc). I only use AS3 and some of my projects take a while to compile. If certain hardware can guarantee me a faster compile time, it'd be worth including those things in my shopping list.
I can make a normal preloader, with a bar and percent shown and so on... But I want to make a little thing in the middle of the preloader that rotates faster and faster when the percent loaded goes up. This is what I thought would work:
adding all the bricks of another movie clip into an array in my controlling mc (GameScreen). Except, when I try to remove them from the display list by accessing them from their array, I get
Quote:
ArgumentError: Error #2025: The supplied DisplayObject must be a child of the caller at flash.display:isplayObjectContainer/removeChild()...and so on
I'm guessing it's something to do with adding another movie clip's children into an array in a movieclip that isn't the stored clips' direct parent, but it's parent's parent.
Code: private function checkBrickHit():void{ for(var i:int=0;i<brickArray.length;i++){
Whenever I try to remove an object/child with enterframe running I always get null reference error.In my particular case, the setup is Battlefield contains a lot of Robot:
A child (Robot) dispatchEvent that it is destroyedThe parent container receives the event and starts removing the child by removeChild and remove the child from an array of Robots.on enterframe, during a loop to move the robots around, sometimes I would get null reference, so I have to call if (robots[i] == null) continue;
How do you safely remove the child without sprinkling if robot is null all over my enterframe?
Well I'm starting to really enjoy AS3, my next question then is this: In AS2 I'd often remove all movieclips with something like this: PHP Code: for(var i: String in container) { container[i].removeMovieClip(); } Is there something similar in AS3 that I can do without resorting to maintaining an array of references to each child of my container?
I have a menu that is a type of wave, thus I'm using Flash, not HTML. My issue is that I have a bevel on that wave, but that bevel extends onto the text that is a child of the MC that has the bevel. Is there any way that I can remove the bevel from the text (Or technically shapes since they were imported from IL) without removing it from the entire element?
And yes, I've tried this.filters=[];
Also, I can't keep everything one shape in the MC, because I have hover attributes.
[code]in my original code..function "test" will change the x axis of the images by Timer..I wanna the x axis of the images can be changed after every two seconds..but when I run it..it's obvies faster and faster every time when the Timer dispatch the TimeEvent the delay always shorter than the last time.
trying to remove instances of child/children. I have a function (btFnc) that creates a child (bT) and then the function is called several times to add instances to the stage - btFnc(264,3.6); btFnc(304,4.6); btFnc(344,5.6); btFnc(384,6.6); btFnc(424,7.6);Yet i cannot for the life of me remove all of the children, only 1.
Code: public class screen18 extends MovieClip { private var scrnXMLLoader:XMLLoader;//XML Loading class private var screenTxt:Array;
i have an ary contain a numbers of information as below
var ary:Array = new Array();var temp:Array;
var box_mc:Box; // this is a movieclip which contain dynamic text box inside.
// assume inside the array have 9 itemName
on the stage i got an empty empty movieclip and i add child from the array on it..
[Code]...
Problem:I could delete the item everytime i clicked on the remove button but it appears a gap/space between it. I want to push all remaining box_mc at the bottom up after i remove 1. It only push up when i come back to this page after i navigate to some other page. Does anyone know how to implement this ? P.S. i tried using enterframe and i failed, probally the way i did was wrong or watever.
Isn't there a simple "remove all children" function in flash? I don't understand why this code isn't working. I add children via: for (var i in project_array[cp].project_type_clips){ container.header.type_loader.addChildAt(project_array[cp].project_type_clips[i],i); loadCount++ }
And then remove them via: for (var i in project_array[cp].project_type_clips){ container.header.type_loader.removeChildAt(i); }
But I get an error that the supplied index is out of bounds, and yet one clip is still left on stage. Likewise, if I try to add them without levels, like this: for (var i in project_array[cp].project_type_clips){ container.header.type_loader.addChild(project_array[cp].project_type_clips[i]); loadCount++ }
And remove: for (var i in project_array[cp].project_type_clips){ container.header.type_loader.removeChild(project_array[cp].project_type_clips[i]); } I get the same error.
I want to destroy/remove all the children of an object including grandchildren of those children and so on.
I was thinking of using a recursive loop along the lines "if you have children, check if they have children, if they do, check if THEY have children and so on until they have no children and if so removeChildAt(0) of the parent you last checked.
ActionScript Code: obj0 |-obj1 |-obj2
[Code]......
A quick second question, we all know that event listeners should be removed when no longer needed but I was wondering about the event.COMPLETE listener for loading say XML or a video file or any loader object. Is there any point removing that listener of is it in effect dead anyway because it has triggered when "COMPLETE" and won't ever trigger again? Isn't it still "listening"?
i want to do is to remove all the children (ninge) added with Timer when the user rolls out the mouse. The ideea is when the user moves his mouse over the movieclip it begins to snow and when it moves away i want all the snow to disappear.
ActionScript Code: rama2_mc.addEventListener(MouseEvent.MOUSE_OVER, rama2); function rama2(event:MouseEvent):void {
I want to remove all of the textfields for a movieclip, only textfields. Does anyone know how to do this?
Code: if(this.mcContentOnStage.getChildAt(i) is TextField){ "This must be a textfield! I need to remove it!" //this.mcContentOnStage.getChildAt(i).text }
is there a way to remove all children mcs from a movie clip in a way similar to
if (mc.numChildren) mc.removeChildAt(0);
(which is AS3 by the way) but for AS2? I need to "empty" a container movie clip from movie clips duplicated in it through attachMovie, so i can load other stuff AFTER its emptied
I created a loop that adds the same movie clip 22 times inside of another movie clip and pushed it into an array in order to control it later. But i can't seem to find away to remove those children from the movie clip... is there a way to remove all children of a specific movie clip? I tried to create another loop but i cant remove the children using removeChild(arr[i]);
So i have a calculator and converter on two different scenes. I have two arrays which i stored for my number and operator buttons. I am using a button function to switch between scenes and would like to remove the children for all the buttons inside that array however it only removes one button inside the array. This is the code i have so far: My buttons:
How do I remove all children from a display object container? I want to make sure that when I re-enter a particular frame that there are no imageLoaders loaded into my photoGallery.
I have created a flash file to serve as an image gallery with several different chapters. Each individual chapter is represented by a different frame on the timeline. On each chapter/frame, there is a thumbnail gallery at the bottom of the screen. When you click on the thumbnail, I have loaders set up to load and display the full size image. Then I have a loaderX.addEventListener set up so that when you click on the loaded image, it disappears. The problem occurs when you leave a full-size picture open, and then you navigate to another frame. Then when you try and click on it, you can't remove it anymore.
Now, I can't remove the loader(s) when the next chapter button is clicked because unless the user has clicked on the thumbnail, the loader has not been added to the stage, so there won't be anything to remove. I tried adding the following 'if' statement into the function that navigates to the next frame,
'if(stage.NumChildren >0){stage.removeChildAt(0)}
but the problem with that is that then it just removes all the children and either doesn't advance to the next frame or is just removing all children on the next frame as well, so i end up with an empty stage.
I've been dealing with this problem for close to two weeks now, and I can't even find a bulky way around it, never mind finding a tight clean fix.
So i have a calculator and converter on two different scenes. I have two arrays which i stored for my number and operator buttons. I am using a button function to switch between scenes and would like to remove the children for all the buttons inside that array however it only removes one button inside the array. This is the code i have so far: My buttons:
I'm using for loop to display 3lifes on stage using:
[Code]...
and I have already create a hitTestObject on the character, once the character comes in contact with a movieclip, removeChild(Life); is triggered. The first child removed successfully but when it comes to the second one, an error appear:
[Code]...
What should I do to solve this? and how do I trigger an event after no more life is left?
My problems comes in when you have to open a different image album and have to eliminate all the previously loaded children in the movieclip. When i load a new album i used a code you posted here: AS3 How to remove previous loadersbut the problem is that sometimes the user leaves the album page before ALL the pics laod so when they click on a new album to open it a new image is placed somewhere else cause the loader has already been launched. I've tryd to close() the loader but it doesn't seem to work.Here you can see the working site to see what im talking abouy you have to click on an album, leave before all the pictures load and open up another one.
getImage(dataList[0].file) function getImage(href:String):void { var loader:Loader = new Loader();
This is the code i used in a gallery that loads images sequentally. My problems comes in when you have to open a different image album and have to eliminate all the previously loaded children in the movieclip. The problem is that sometimes the user leaves the album page before ALL the pics laod so when they click on a new album to open it a new image is placed somewhere else cause the loader has already been launched. I've tryd to close() the loader but it doesn't seem to work. Here you can see the working site www.barbarabritvin.com (to see what im talking about you have to click on an album, leave before all the pictures load and open up another one.
getImage(dataList[0].file) function getImage(href:String):void { var loader:Loader = new Loader(); loader.contentLoaderInfo.addEventListener(Event.CO MPLETE, imageReady);
I'm making a OSX-finder-type file browser in CS4.The Structure for the folder and files is being generated by a PHP in a XML, heres an example:(sorry the xml is not sorted, but the command i'm using in php doesn't sort it)