ActionScript 3.0 :: How To Unload Library Class From Memory
Aug 25, 2010
I am trying to unload a class from memory using the following experiment:Create a shape on stage, make a movieclip out of it, add a trace in the first frame, extend the movieclip to be about 40 frames, give the movieclip a linkage name "test" and remove it fromstage.Experiment 1:Add the following code to the stage:ActionScript Code:var mcl = new test();Publish the movie. You should see the trace statement showing up all the time.Now I wish to delete this instance.Experiment 2:ActionScript Code:delete mcl;gives an error that it cannot delete a fixed property and have to set it to null instead.Experiment 3:
ActionScript Code:
mcl = null;
No error, but still see the repeating trace output.
Selecting - buttonOne- loads the external "galleryOne.swf" file as expected, but when buttonTwo is selected it should unload the "galleryOne.swf" file that is currently loaded in the container and load the "galleryTwo.swf" file in its place.
when buttonTwo is selected it loads the "galleryTwo.swf" file and you see it for just a second, but the "galleryOne.swf" file returns to the display.
Does unloadMovie remove the targeted file from the flash player memory? It not, how do I dump it?
I tried a search but it keeps saying I failed the No Spam when I didnt get a question - d'oh. Ok, this has probably been covered before, but a lot of research hasn't got me far, so I thought I'd post. I have a single page html site with several links that load up a homebrewed lightbox. The inline content is written out at the bottom of the page and the divs are set to hidden.
When a link is clicked, the light box loads and the correct <div> is set to visible. The flash plays, or is interacted with but when the user has finished, they click an html Close button and the div is hidden again. Obviously the swf is still loaded and running; it could be even mid animation. The more swfs loaded, the more memory that is taken up.
My development machine can handle the 600mb + used up by have a few FF windows open and a couple of copies of the site; but I imagine it will cause problems for users. So I've been looking into externalInterface to fire a command into the swf to close itself down when the close button is clicked, but I can't seem to find anything
I'm struggling to understand this, so I'm hoping someone can explain how to further enhance the functionality of my simple unload function, or maybe just point out some best practices in unloading external content. The scenario is that I'm loading and unloading external swfs into my movie(many, many times over) In order to load my external content, I am doing the following:
I'm having real problems with unloading external SWFs, I've spent 2 days looking for a solution and looking at this forum and using the code supplied and Flash help files and much much reading and trying, I still cannot achieve the desired results.I have a Menu.swf which hosts many buttons which loads External SWFs ... simple enough and fairly common.These External SWFs are the same size as the menu and so loads completely over the top of Menu.swf which is exactly what I want to happen.I have a button on these External SWFs which I want to, delete the External SWF from the Flash player's memory and remove all event listeners (which I guess will happen if the External SWF is deleted from memory)The reason why I want it to remove the movie completely from memory is that I have 18 items and by the time it loads the 18th item, the player is going slower then trying to swim in hummous.[code]
I have a menu and each button reveals a hidden layer which includes it's submenu (another swf).The submenus have sub-submenus in the same swf.When I take the mouse away from these layers the submenus hide again.All these work.The problem is that when a sub-submenu is opened and then the layer hides, when it's shown again the sub-submenu is still opened.Is there a way to clear memory or unload a swf file through html or through the main menu swf?
The application is too big to describe here, but I can tell you I have up to 20 modules or more that the client can use at any time. And if I go on loading screen after screen, my application can ocuppy 500MB and more.The script that I use to load and unload modules is:
public function createModule(modulo:String):void { if(moduleLoader != null){ moduleLoader.unloadModule();[code]..............
i have created a colour picker that loads movieclips from the library onto the stage.however i need to create a "start over" button that will remove all these added clips.my code is as follows:
Code: startover.addEventListener(MouseEvent.CLICK, removeallFunction); function removeallFunction (event:MouseEvent):void
I can't seem to remove / unload the external swf files e.g when the carousel.swf (portfolio) is displayed and I press the about button the about content is overlapping the carousel (portfolio) . How can I remove / unload an external swf file from the main flash file and load a new swf file, while at the same time removing garbage collection from memory?
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.
I created an flv video player using Flash Builder 4. This "BasicVideoPlayer" project is compiled into a SWC that will be eventually be used to create other video players that extend the functionality. One of the features is a view that appears when the video has finished playing that displays a "Play Again" button. This "Play Again" view has its own class, "BasicPlayAgain", that accepts a graphic asset that is exported from a .fla file that contains all of the graphic/UI assets.
In my new project, "EnhancedVideoPlayer", I'm using the BasicVideoPlayer SWC as a library to create a new video player that will add more functionality to the "Play Again" view; specifically it will add more buttons to that view.The EnhancedVideoPlayer uses a default class that extends the BasicVideoPlayer class. The BasicVideoPlayer class has a member called "playAgainScreen" whose type is BasicPlayAgain. The EnhancedVideoPlayer needs to override the playAgain member and recast it as EnhancedPlayAgain so it can control the new buttons properly.
I'm trying to load a RSL library into a flash animation developed with Flash CS5 IDE, that extends a custom class and implements an interface. I have reduced the problem to the simplest setup and find that I can have my main class extend another class or implement an interface, but not do both at the same time if I want to load an RSL.I have a very simple class to extend:
import flash.display.Sprite; public class MySprite extends Sprite {[ code]...........
but if I want both I get the VerifyError: Error #1014 with MySprite not found and ReferenceError: Error #1065.
The use of library classes confuses me once again. I have the following situation:
[Code]....
I cannot put in any baseclass when using the class, so I'm forced to remove the baseclass. When using only the class I get a whole bunch of errors don't make any sense at all, and still appear even if I comment out all the code in the Page class. comop_padpagesFavorietenPage.as:7: 1152: A conflict exists with inherited definition com.op_pad.pages:Page.help in namespace public.
Library symbol "Card" is linked to class "Card" which extends "MovieClip". Library symbol "Card" contains a card background image.Library symbol "Ace" is linked to class "Ace", which extends class "Card". Library symbol "Ace" contains a TextField with a big letter "A".So we have Ace extends Card which extends MovieClip. Ace therefore extends MovieClip, but does not DIRECTLY extend MovieClip.When I drop an instance of Ace on the stage and compile the clip, all that shows up is the big letter A. However, I expected the background image from Card to be included, since Ace extends Card, and the Card symbol contains the background.It seems like Flash ignores symbol content unless it belongs to the top-level class being instantiated.I think it's LAME that one symbol can't extend another. The IDE could easily draw Card as a non-editable background while I'm editing Ace which extends it, and it should instantiate Card's content and then Ace's content when an Ace is instantiated.
I am making an application where I load a picture from the web at a rate of once per second. When I load a new picture I unload the old one the problem is that the old pictures are never completely erased from memory and the application keeps on consuming more and more memory until I'm guessing it eats all the memory in the cache (I haven't run it for that long yet :))
here is the code: what this does is load a picture when you click the screen, then unloads it when you click the picture. do it a few times and notice that the numbers (which show System.totalMemory) only go up but never go down to their original amount...
Code:
var url:String = "http://www.memorycity.com/shop/MBB/images/GIGABYTE_memory.jpg"; stage.addEventListener(MouseEvent.CLICK,onclick) var txt:TextField = new TextField()
I have got a memory leak problem in the example below(u can download the code from the link) http:[url]......
Running in Profiler:- What I am trying to do is creating new panels by selecting the Add new panel button.I am selecting option allow Close (check box).(After creating few panels and closing these panels i could find there is memory leak with the SuperPanel class) how to resolve this memory leak.I tried by changing optional parameters in addEventListener, but that didn't work.
I have as3 class like this package { import Global; import flash.display.MovieClip; import flash.events.*; public class Alert extends MovieClip { [Code] ..... I use function Close() to remove class itself but i noticed it doesn't frees memory. Is there any way to remove it completely and free used memory?
I have a serious memory leak problem. I think it's because of the use of etDefinitionByName() although I use removeChild and I put the reference to null. I made a example that illustrates this.
I need to create a hundred instances of a movie clip.Is it better to add functions for these movie clips in the movie clip class or in a separate class?For example I have move(), setPosition(), setRotation() functions, would this create these functions a hundred of time and take memory place or just reference the functions?
When properly loading and stopping .swfs imported via the loader class the .swf is loaded into the memory. When i have close to 25 vids beeing played and each of them is about 5mb, it goes without saying that it takes alot of memory. When playing a video, selecting a new video, then going back to the old one, it loads 3 videoes intoo the memory because i use 1 single loader variable.. how you can prevent the memory leak?
I have a question regarding AS3 memory management. Supposing I created an instance variable for a Class, in this case or type Sound: public class SoundStore extends Sprite{ var s:Sound; Then within various class functions I referenced this variable multiple times, each time I wanted to load in a new sound: s = new Sound(); Am I correct in thinking that each time I created a new Sound I would be overwriting the previous allocated memory?
I am trying to load external swf's from buttons. I managed to load an external swf from a button, but as a result I can't work out how to get it to unload when other buttons are clicked. Currently In the flash file I have only 2 buttons 'dutrain_b' and 'portfolio_b'. I would like to add many more when the code is working.
Using ActionScript can I do with my game, which is running in a browser, verify that the user already has the files needed to run the game installed on your computer? If he had these files do not need anything else that was born and can play the game immediately. If he did not have the files, they would be loaded so that the browser does not erase these files. So when he returned to play the same game day after,as the files already on your computer, nothing need be loaded.How do I remove one of the main memory image that was loaded using the Loader class? I tried using the unload () method but nothing happened.
I was thinking about how to streamline my code the other day and looked through my classes checking for possible memory leaks. I wonder when are variables declared inside of methods clear for garbage collection? or are they not and just hang around? For instance if I have a class like this:
[Code]...
Since the variable was declared without reference into the class how long does it stay in Flash's memory, or does it stay indefinitely because it cannot be nullified?
I have a bit trouble with LoaderMax memory occupy, i have a queue, and i am keep loading images depend on user's action. if they click load more and it keep load, but i would like to clean the memory which been occupied by the previous queue (i have remove all the children been added by the loading previously). is there a way i can do it? the behavior like this.
I have an FPS monitor running and notice that I am getting choppiness here and there, bringing my game from 40 to 27 fps and back and forth at certain stages. I have an idea of where it is happening, but do not know for sure. I looked up quite a few memory monitors but haven't found anything decent yet. Is there a memory monitor that allows you to see the memory leaked and find its location? If not, how about just he memory leaked?