Here's my question. Suppose I've written some AS3 code like: statementOne; statementTwo; Is there any possibility that the garbage collector will run during or between my two statements, or does it only run after my "user" code has finished and returned control up to flash? We have an A-Star codeblock that's sometimes slow, and I'd like to eliminate the GC as a potential culprit. The codeblock is obviously more complex than my example above, but it doesn't involve any events or other asynchronous stuff.
I have ship game that i create using falsh as3. but i have the problem with memory usage. the memory usage still increase when game played. whereas the System.gc was called, but the memory still increase.
I am creating a bunch of movieclips when I first start the flash movie.I then put them into an array and use functions to add and remove them by selecting a random index in the array.When they are removed are they marked for garbage collection?Or can I just keep creating them.Might be hard to understand so code is below
var mc1:mov1 = new mov1(); var mc2:mov2 = mov2(); var mc3:mov3 = mov3(); var mc4:mov4 = mov4();
var theRandomClip:Number; var movieClipArray = new Array(mc1,mc2,mc3,mc4)
function getRandom():void{ theRandomClip = Math.floor(Math.random()*movieClipArray.length); addChild(movieClipArray[theRandomClip]); }
function remove():void{ removeChild(theRandomClip); } //Then I would call them in succesion many times
getRandom(); remove(); getRandom(); remove();
//etc do I need to worry about them getting garbage collected and no //longer being available?
fully removing objects from memory, but I still think I'm not getting it. I've written a test script that looks the following:The stage has is of class MemTest
There is approximately a 3x difference in the rate of gain of memory usage between simply letting the movieclips accumulate or running removeChildforever() in the enterframe. There doesn't seem to be a difference between using the "killme = null;" line or not.However, I am still seeing an constant rate of increase in memory usage of about 3 megs over the course of a minute, running at 120 fps. why is the memory usage still going up? Is garbage collector run so infrequently that it hasn't happened after 7200 frames?
Lets say a scene started off around 70-80mb, it loaded a swf in, and by removing the event listener and setting objects to null and numbers to 0 before unloading the swf,and went back to the original scene, the memory stack up till like 80mb++, and every time I repeats the same process the memory goes up higher,is that normal? or its a memory leaking issue?
Looks like the garbage collector is not removing movieclips that have textfields set to TLF. I'm using Flash Builder's profile inspector and TLF brings in a bunch of objects and prevents the clip from being removed by the garbage collector (including all the objects that TLF put in memory). How could Adobe release CS5 with such a crappy implementation of text? If there is no solution I will have to avoid using TLF text for all my projects.
I've coded a 2000 line game on one actions layer (facepalm*) and I just recently learned about the GC (garbage collector). I've looked around a bit and can't, how to trace the source of it. There is an interesting article that mentioned event listeners and for every addEventListener there should be a removeEventListener. My game has 60 adds and only 15. What I can't make sense is that the mc's that have the event listeners are never removed, but just moved off of the stage. Others are just made invisible. So if the event listener is added once, why would the memory keep growing? (I'm using the Windows Task Manager to monitor this). Another point was to remove objects so that the GC can do its work. What I did was create an object, add it to an array then null it.
Then removed the object from the array. for ( var ii:int = 0; ii<instanceArray.length - 1; ii++ ) { stage.removeChild(instanceArray[ii]); delete(instanceArray[ii]); instanceArray[ii] = null; }
I'm forgetting now exactly how I should dispose of unneeded objects. In the past, every object/class I created had a public dispose() function which removes all added listeners inside it and called the kill/dispose function on any children of it that may need the same (so it worked its way down the tree, as this process can continue for as many children/grandchildren there are in the list). So basically, the code in the parent class would look like this:
Code: childObj.removeEventListener(MouseEvent.MOUSE_DOWN, anotherHandler); childObj.dispose(); childObj = null; ...and the childObj class would look like this: [Code] .....
Do I need to set any variables/objects defined in the child class's class scope to null prior to setting the class itself to null? Or is this handled automatically when I set the class itself to null from the parent (assuming these class-scope-defined variables/objects have no listeners or child objects which need to be disposed themselves)?
Is there any cross-platform-safe method for dealing with keyboard shortcuts in Flash? For example, on my Mac, pressing ctrl+f results in a KeyboardEvent where the keyCode is 6, but on Windows, the keyCode is 70.
I'm trying to handle movement of my Hero Class by adding event listeners in my constructor. I'm trying to move my Hero object.Inside my hero constructor, I have:
I want to have a single event listener for multiple events and depending on the type of event i want to handle them separately.Something similar to Swiz framework see: 'Handling Multiple Events from a Single Method'.i have a piece of code like
var toolOptions:UIComponent=ToolOptions.createToolOptions(type); if (options != null) {[code]....
In above toolOptions is a mxml component which get dynamically created based on 'type'.Also which type of event should be dispatch the event from the component? eg: Event.SELECT. To be more precise the above is basically required for a toolbar.When user selects a tool,he is shown options for a tool and when he selects options,tool should apply them to object on the view.
I need to do something and I don't know if it's possible... in a proper way.
1 - I have an FULLSCREEN application that extends to two monitors in a Windows system. 2 - The graphic card is extending the single desktop to the two monitors, so the fullscreen fits everything correctly. 3 - Only one monitor is interactivity-enabled, with an interactive touch-sensitive foil on it, which works great. 4 - The second monitor is interactivity-disabled, it just displays stuff depending on what happens on the first monitor.
The Problem: The interactive foil on the interactivity-enabled monitor responds as if it is the *whole monitor*. But it only covers one monitor!! The *whole monitor*, are the two screens put together. I obviously can't cut the interactive foil in 2, and then stretch the two parts to fill a monitor each... So if one touches beyond 50% of the foil's width, the touch event will actually occur in the second monitor!
A fact for the solution is - if all Mouse Events occur with mouseX divided by 2, everything will work fine! How to make all Mouse Events's mouseX be divided by 2? Is there a way to do that in the core of the actionscript MouseEvents handling?
I have to create a custom header for the AdvancedDataGrid component. The custom header must have two buttons in it. The custom renderer must be applied to more than one column.
How I can fire, dispatch and handle events from the custom headers?
i've created a socket extension class. the pseudo code below tries to make a socket connection using the passed parameters. if there is an security error, such as the port number not being an acceptable port number, i want to handle the security error.
however, i can't catch the security error. a popup window appears with a description of the error and my errorHandler function is never called.
I have just established a menu based-image in flash in the main html page. Also I do have a second page has details on each option of the menu of the main page. I am trying to whenever I click on any option of the menu in the main page; this should take me to the specific section in the second page describing this option.
I've decided to move on to AS3 (and maybe AS4 in the future). I've done PHP object oriented programming and Java oriented as well, but Flash is a bit different because of actual visual things that occur.
I tried to follow a very simple tutorial. I made a "collector" MovieClip and added both the identifier "collector" and the class "collector" to it. I added the project class as "superClass".
In superClass.as I had the following lines of code:
I put together a quick sample just to test out the garbage collection convenience functions in casalib.
All seems to work well (i.e, objects are removed from the stage, listeners are stopped) however I am using Mr. Doob's stats display and it looks like my memory usage isn't going down after the destroy method is called?
[Code]...
Are my items actually being marked for garbage collection? What am I doing incorrectly?
I know that there have been questions asked about garbage collection and memory management and after hours of searching through the internet I frustratingly haven't been able to find a solution to my problem.So here it is:I have a function that reads an XML files and creates thumbnail instances of a class. The class contains the usual information as well as two listeners for MOUSE_OVER and MOUSE_OUT. The thumbnails are movieclips and are placed in a sprite container/holder. The container/holder is created with code:
Code: var containerProjects:Sprite = new Sprite();//Creates sprite to contain projects spriteGallery.addChild(containerProjects);//Adds container to main container
Yesterday when playing a game (Balloons Tower Defense 3) I noticed that the game started to slow down over time and then randomly speed up very quickly. Looking at the memory usage dropping each time I assumed it was the GC running.
As a legitimate question, is there anyway to force Flash to GC from, say, Firefox? Perhaps there's an addon or a command you can run that will do this? I know that you can do System.gc() but this game isn't mine so I can't modify the source with a "Click here to GC" button.
I've a question about garbage collection in flash.I'm making a game using with Flash AS3. This game will stay open for a few hours, like 5 - 6 hours. People will play it again and again in these hours. I have 15 loader in my flash game and don't want to have a problem with Garbage Collection. I'm uninstalling every load object when it is not necessary but i'm not sure do i have trouble about this garbage collection?
This blog (and others) state that you should set object references to null inside your dispose() methods when cleaning up objects. However, Actionscript 3 (with Flash Player 9) uses mark and sweep to clear out circular references for you. So I am wondering: is there really any reason to null out your object references?
I have memory leak in my project and I wonder how garbage collector working in Flash Media Server.I have 2 questions: Will FMS release objects from memory that have cycle references. For example when object A is has ref to Object B and vise versa.Why FMS still consumes memory after application unloaded by idle timeout. For example there were no users connected then fms unloaded app after 20 minutes. Memory usage left at the same level (for a long period of time).
my flash has lots of images and dispaly objects. Hence it costs high cpu usages. after using my flash for an hour, it is dieing.I am trying to reduce it. I have some questions here:
1. I create an array, or string at frame 1 for example, when I go back to frame 1, should I create a new array, or a new string?? Or is it better to make it empty array(eg:[]) or empty string("")? which way it reduces cup uasge more?
2. does anyone know how to force the flash to do garbage collection??
3. any other possible reasons that cause high cpu usage?