ActionScript 3.0 :: Memory Doesn't Release When Removing MovieClips
Jul 8, 2009
The app is basically an animated character that sits on screen and moves around doing stupid little animations. Each animation (Talking, Dancing, Jumping, etc) is an individual Movie Clip made up of around 50 or so PNGs in sequence. I'm using CS3 to create the clips, and exported them as SWCs for use in Flex. When I addChild() the MovieClip to stage, memory usage increases, which makes sense. However when I use removeChild() on the same clip, and then add another clip, memory increases, and this goes on with every new clip... essentially leaving 10 clips in memory even if they aren't being played.
Now, first thing you are going to think is I've got a reference to the clip somewhere and it's not garbage collecting. Well, I'm using weak listeners everywhere, and I'm pretty sure I've killed every reference by NULLing out the objects. I understand Garbage Collection doesn't happen right away... but it never seems to happen. As a test, I wrote a really bare-bones app to attach and remove a clip to see if the memory ever frees. I've left the app running for a half hour after removing the clip from stage, and memory usage stays the same:
[Code]...
View 2 Replies
Similar Posts:
Dec 6, 2005
Underlined Text On (rollOver) Is there an action script to do on (rollover) underline text? It would be on a button that would also, on (release) gotoAndPlay a frame. I know you can have a movie with AS like this:
[Code]....
But when I add the on (release) to the movie it doesnt advance the timeline on (release). And when I change the file to a button instead of a movie clip it doesnt do the underline on (rollOver).
View 1 Replies
Sep 1, 2009
I am developing a complete AS3 based corporative website. Everything is nice and cool, except that seems to be impossible to release memory... I have read tons of articles referring memory management on AS3, and applied all the techniques on my code: I'm using weakly referenced listeners, removing them when I am done, setting to null all my objects when I want to release them, using the method unloadAndStop whenever I want to unload one of my external SWF files, disposing my loaded bitmaps using bitmapData.dispose()...
And no way, the memory continues increasing to infinite and beyond... One thing that calls my attention: If I minimize my browser and only on that situation, the memory goes down on my task manager to a reasonable amount.
View 8 Replies
May 10, 2010
I have 2 class like following
ActionScript Code:
public class classB {
protected var mc : MovieClip;
public function loadImage() {
mc = new MovieClip();
var myLoader:Loader = new Loader();
[Code] .....
And after complete loading image
ActionScript Code:
objA.releaseMemory();
trace("system memory = " + System.totalMemory);
objA = null;
The memory doesn't reduce.
View 1 Replies
Mar 17, 2004
This is the scenario:
[AS]
// Assuming a lot more properties are added to all objects
var parent:Object = new Object();
var kid:Object = new Object();
var kidToy = new Object();
[code]....
Does making the parent object null recursively release all memory used by all subordinates in the hierarchy?
View 3 Replies
Mar 27, 2008
I'll try to explain the general operation of my program, and that might shed some light on my issue. I have a menu with 50 different small postcards. When one is chosen, the program zooms it up in order to fill the screen, populates some data which is unique to each postcard, and "flips" it so you can see the writing on the back. The postcard is a movieclip which imports a front image, 3 back images, and some XML text. There are some buttons on the "back" of the postcard to choose to look at a few images and text.When you choose to close the postcard, it flies away. I use the same movieclip for all 50 postcards, and just change the images and text that I load.
Once the postcard flies away, I want to remove it from memory. It won't happen with removeChild() as that keeps it there in case I want to reference it again I guess, and I have tried setting the postcard variable name to "null" without much success.I add listeners to the buttons on the postcard when I instantiate its class, so I am not sure if I have to remove them in order to get the garbage collector to deal with it. But, I also don't know what I don't know about removing things from memory. In one section of the Flash docs (Working with display object containers) it says:
"The removeChild() and removeChildAt() methods do not delete a display object instance entirely. They simply remove it from the child list of the container. The instance can still be referenced by another variable.(Use the delete operator to completely remove an object.)"And, at another place in the docs (the script reference about removeChild()) it says:
"Removes the specified child DisplayObject instance from the child list of the DisplayObjectContainer instance. The parent property of the removed child is set to null , and the object is garbage collected if no other references to the child exist. The index positions of any display objects above the child in the DisplayObjectContainer are decreased by 1.
View 6 Replies
Sep 29, 2011
I'm having a problem where I load my SWF (Advertisement) into the dom after an event happens in a flash game. After viewing the ad, the SWF is removed with JavaScript and users continues to play, this continues several times without ever reloading the page.
The problem I am running into is in IE 8 & 9 performance of the game drops and frame rate becomes choppy after several ads are shown. Each advertisment has a timer built in and my thought is that the ad is not being fully removed from memory hence causing a slowdown.
Is there a way to ensure a full removal of the ad or at least a way to detect within the ad that it is no longer on the page & kill the timer?
View 1 Replies
Jan 11, 2011
I have a function called changeMovie which is supposed to load a new movie/swf into a already established container.I can get the new movie to load (all these movies have sound embedded in them) but I can not figure out how to get the old movieclip out of memory.I can foresee an instance of memory overload in my application down the line.I am using Flash CS3 with AS3.[code]As it stands now, I can get the new movie to play and be shown but the old movie clip still continues to play "in the background - along with its sound".
View 9 Replies
Aug 5, 2011
I have this line
Code:
this.parent.removeChild(this);
So basicaly the object is removing it self from the parent object,but I still think that it exisits in memory and doing its backend job.How can I remove it completely from memory?
View 8 Replies
Feb 18, 2009
The following for loop removes children from their parent if they're in the display list. It works correctly, but I also want to remove each child from memory with the same loop.
View 1 Replies
Apr 14, 2010
I am adding few items dynamically from the library to the stage by creating instances. If I remove them using removeChildAt() then the item gets removed from the display but exists in the memory. How can I remove this from memory?
View 2 Replies
Sep 17, 2010
I'm making a rather large flash project and so I'm concerned about memory usage. At the end of each section of the application I remove the overarching parent element that holds the content. Although this remove the parent, does this also free up the memory for each of the children contained within this, or should I run an iteration to remove those prior to removing the parent?
I'll give a little more explanation in-case I'm not expressing what I want:
addChild(movie1);
movie1.addChild(movie2);
movie1.addChild(movie3);
By using this code:
removeChild(movie1);
Does it remove movie2 and movie3 from memory or are they still stored, just unlinked?
View 3 Replies
Sep 29, 2009
its possible to remove something from the stage without removing it from the memory. Ie not using removieChild(); Reason being: I want to replace an image inside a movieclip rather than add another image on top or remove the image and movieclip entirely.
View 2 Replies
Dec 2, 2009
I'm performing the following operation many times (sniped of code below). I'm creating a two dimension array whose overall size depends on each iteration the process takes.
myArray = new Array(); // initialize the array
myArray[0] = new Array(); // add new array to first index
myArray[1] = new Array(); // add new array to second index
Question is: When I need to recreate this sequence again, do I just perform the same operation (repeat the same 3-lines)? Or is there a way of freeing up resource first.
View 3 Replies
Aug 14, 2009
I've made a script which loads in, at intervals, images in a sequence (image1.jpg, image2.jpg ). However I've being doing my nut as to how to remove the preceeding image from memory as looking a the Windows Task Manager, each image gets added again and again, accumulating memory usage. I've tried removeChild, and null; stuff, but to no avail.I want it to go through the 10 images, and with each step to the next image, remove the last one from memory.[code]
View 2 Replies
Oct 15, 2009
I'm trying to make a Starfield program as practice for ActionScript 3. I'm using a timer event in the document class to create Star objects which are defined by an object class connected to the movieclip Star in the Library. The object class has a timer as well, and at each tick it repositions itself a few points away and scales up, creating the image of a star shooting towards the sides of the stage. When the star has gone past the boundaries of the stage or when it has scaled to a certain size, it removes itself from the display list with the command: this.parent. removeChild(this);This removes the star from the display list just fine, however after that I can't get the star to set itself to null so that it will be removed from memory, and I'd like some suggestions on how to do this properly. An idea I had was to make a function in the document class that the child objects can call, something like this.parent.KillMe(this) which would give itself as a reference to the function, which could then use a local variable reference to set the child to null, removing it from memory. This all seems terribly complex, so I'm sure there's another way.
I haven't noticed a memory leak or slowdown, however, so I'm curious if objects without references that are removed from the display list are automatically removed? That could be both good and bad, as the object might want to add itself to the display list again at a later time; not in this Starfield program, but perhaps in another I write.
View 11 Replies
Apr 22, 2009
I am having memory problems when adding & removing children. Here is a brief overview of what I'm doing:I'm ading children to a VBox component:the structure of the children is:
Code:
<mx:Canvas>
<mx:Image/>
<mx:Text/>
[code]....
All remove the children, BUT I am getting memory leaking, especially using the second method! If I don't add the TextField child to the UIComponent I don't seem to experience any memory problems!
View 2 Replies
Jan 21, 2011
I am having a bit trouble removing a movieclip properly from memory.In the onComplete event I use this to add the swf content to my clip
[code]....
The removeChild is double here just for savty But the trace command from the clip I loaded continues to put somthing in my output window. So it still keeps running and it isn't even stoping.
View 4 Replies
Sep 24, 2009
this problem affects my Flex 3 app when it is being viewed using Firefox for Mac. If the user drags the scrollbar then releases the mouse OUTSIDE THE BROWSER, the scrollbar doesn't get released and continues to scroll the content once the user rolls the mouse back over the Flex content. [URL]
View 1 Replies
May 31, 2010
Is this at all possible? I just finished re-building my entire portfolio site in AS3 because I can't change the frame rate for loaded content in AS2. Now I find out after completely rebuilding this thing that AS2 content gets stuck in Flash Player 9's memory and won't erase on Loader.unload. All my work from years back is in AS2.
View 0 Replies
Dec 15, 2006
here is my script:
stop();
//setting up the list of frame names for the buttons
imagelist = ["horror","legs","chair"];[code]....
So my problem is that on the button release it doesn't go to the frame that I labelled .My button symbol is called b_next with instance name of next_b. So don't think thats the problem. Is it because I made an array that equals the instance name of my frames?
View 1 Replies
Jun 8, 2010
why we don't have the option to force Garbage Collection in the release player?
View 2 Replies
May 14, 2011
Hey. I am having problems getting some movieclips to link to different URLs on release. I am able to get them to animate, and I am able to get them to link to an html page seperately, but I can't get both functionalities to work at the same time (animate and geturl) and it is driving me crazy!! I've tried putting the actionscript in the instance object, in the action layer, and other things and nothing seems to work!?
View 4 Replies
Jun 4, 2010
I have an AIR application i'm trying to release with flexbuilder. Launching application has no problem ... bin-debug dir is correctly filled with my files. But when i want to create the AIR file (export release fuild), AIR files content view is empty and bin-debug directory is never filled.
View 4 Replies
Feb 3, 2011
I have three buttons on screen that navigate to different places on the timeline. I have set them all up as buttons using a generic button in the library and then given them all different instance names. I selected the button and changed the text colour for each state in the timeline (up, over, down) to keep it simple. The buttons are all, as far as I can analyse, identical in all but instance name.
When I test the movie, the first button changes text colour on 'over' and, when I click (i.e. down state) the colour changes again as designed. The navigation action doesn't occur until I release the mouse button, giving the feel of having 'clicked' the button.
With the other two buttons, which have been set up as far as I can tell in exactly the same way, when the down state occurs, I see a momentary flash of the text colour change and it performs the nav straight away. I really want it to perform the same way as the first button but cannot for the life of me see why they're behaving differently.
View 1 Replies
May 14, 2008
[URL]
The movie loads in an external image and refreshes it every second. What happens, though, is the previous image seems to stay in memory. Eventually the browser will hang, because the memory footprint of the flash movie is so large. Even while testing outside the browser, I can see the memory increase by a couple hundred KB every second. You can see it at [URL]
The code I'm using is below (don't make fun, I don't claim to be a programmer).
Code:
function refresh_url(event:TimerEvent){
var url:String = "http://www.live-photo.com/asheville-east.jpg?ID="+getTimer();
var request:URLRequest = new URLRequest(url);
[Code]....
View 2 Replies
Feb 15, 2011
There is a Flex app with 7 main views. And there is a memory issue when navigating between views.All these views were in a ViewStack, but due to some involving 3D objects I assumed it was too much to have it all in the display list. I'm now clearing all children from the stack and adding/removing them when needed. This gave a small performance increase, but still becomes unresponsive with use. The strange thing is, with this and the original method, the CPU climbs with use but eventually levels out somewhere. Now I'm creating new instances of each screen when they are navigated to and setting the previous variable to null. Now it looks like CPU is spiking when the view is created, but leveling out to something much much lower than it was. This felt like progress, but now the available memory keeps climbing where it wasn't before....
My understanding was calling remove child or remove all children would mark the object for deletion when the garbage collector next ran. I can't see any other references to the instance. My code is along the lines of [code]I have a function for each button to add a new instance like the above.The only thing I can see and feel silly asking but need confirmation, is each view extends a class called "Screen", this class contains a singleton reference to some core components.[code]Would this trick the garbage collector into thinking it was still needed? General advice on clearing Objects from the memory pool would awesome!!! I've never needed to analyze the Flash Player in such depth.I think it's an error with sound drivers, removing all sound and shes purring like a kitten. Works on my machine fine with windows XP, but not on the touch pad the application is crashing on with windows 7 (unsure of the drivers looking into them now) Now I'm thinking its not the drivers, tried 3 different versions, all with no improvement. I did discover the sound was fading in and out with the TweenLite lib. Doesn't look like there are any memory leaks in TweenLite as it works fine on other machines. Just the use of volumeEasingFunction seems to consume increasing amounts of CPU until it freaks out. It is crappy hardware running windows 7, which doesn't help.
View 1 Replies
Dec 10, 2011
here is a very simple code
for ( var i = 0 ; i < 10000 ; i++)
{
var mc:MovieClip = new MovieClip()
addChild(mc)
}
What is the memory accumulated by this code ? Any flash util's keyword i may use ?
View 1 Replies
Jan 6, 2012
I'm creating a highscore list like this:
code: function loaderCompleteHandler(e:Event):void {
var scoreXML:XML=new XML(e.target.data);
var playerResult:MovieClip;
[code]....
I have a MovieClip with the linkage name of "playerResult" in the library. For every loop it takes the scores+names from the xml and displays them by creating a new instance of "playerResult" and attaches them one by one under each other.I need to be able to remove this highscore when it's not longer needed, thus (the most important part) freeing up memory. So I can then use the same code to show the scores again without doubling the memory it uses every time.
code: function loaderCompleteHandler(e:Event):void {
var scoreXML:XML=new XML(e.target.data);
var playerResult:MovieClip;
[code]....
... so I now have a name for each instance (playerResult0, playerResult1...) but still can't come up with a way to remove them.
The scores are displayed like this:
1 name score
2 name score
etc...
View 4 Replies
Jan 6, 2012
I'm creating a highscore list like this:
[AS]function loaderCompleteHandler(e:Event):void {
var scoreXML:XML=new XML(e.target.data);
var playerResult:MovieClip;
[code]....
View 4 Replies