ActionScript 3.0 :: Return All References To An Object?
Jun 3, 2010
I'm just getting to grips now with how the Garbage Collector works.
Is there a way (like a function or a custom class available somewhere) to check an object for all its references and return them so that you can see what it's connected to?
I'm having some troubles with the use of interface and inheritance in AS3. I've done lots of OOP in the past and what I'm trying to do seems obvious to me, but doesn't work in AS3. The question is : Is it possible to override a function that return an Object of class A, and make it return an Object of Class B which extends A ? It seems not to be possible, since I'm getting a signature error in Flash, when compiling. For example, the following set of class do not compile (the code in function definition doesn't matter):
I'm writing an application where I have many objects (data models) that are identified by a unique String ID that every such object possesses and these objects can refer to each other by their IDs.So far so good but now I need to keep track of which object keeps a reference to another object and of course there are cases where an object references (or is referenced by) more than one other object and I was wondering what would be the best method to store these references? In a simple map data structure I could just map one object's ID to another but as mentioned there are cases where an object can hold a ref to an arbitrary amount of other objects
* Is it possible to create weak references to objects (like theventListener/EventDispatcher is able to do) so that if they are removed, you won't be stuck keeping a reference and taking up space to something that should be garbage collected?* Is there any way to find out how many active variables are referencing a certain object? This would be handy to actually create weak references, since, if you for example, have a static array containing all objects created in that class, you can do a regular check to see if there is only one remaining reference, and if so, you can safely remove it.
* Also, might there be any way to list the entire space (one big chunk of binary data, most likely) of every variable currently running in the program, all references, basically, what Flash is currently storing in RAM?I'm pretty sure that Flash (as crappy and lacking as it is in so many areas) does not have anything like any of these built in, but hopefully there is at least something.
I want to do is create several arrays to hold groups of movie clips (i am using as buttons) which have similar functions so that I can add event listeners using a for loop statement rather than making a huge list of add and remove event listeners.I have seen this method working before but I cannot get my code to work!! This is probably a very noob concept but I have been struggling with it for hours.Ok, so in the extends movie clip bit on my as file I declare the array as such:public static var controlBtns:Array;Then in the initializing function I put values into the array as such: [code]The trace seems to output all the object names (as they are listed in the library) and then I get this error: TypeError: Error #1010: A term is undefined and has no properties.Which is kind of obvious as I cannot seem to access the movie clip instance names that I have set up in the array.I tried putting quotation marks around the names in the array making them strings but then I can't access properties of strings - which is obvious enough to.
I have a bit of a memory leak issue in my Flex application, and the short version of my question is: is there any way (in AcitonScript 3) to find all live references to a given object? What I have is a number of views with presentation models behind each of them (using Swiz). The views of interest are children of a TabNavigator, so when I close the tab, the view is removed from the stage. When the view is removed from the stage, Swiz sets the model reference in the view to null, as it should. I also removeAllChildren() from the view.
However when profiling the application, when I do this and run a GC, neither the view nor the presentation model are freed (though both set their references to each other to null). One model object used by the view (not a presenter, though) IS freed, so it's not completely broken. I've only just started profiling today (firmly believing in not optimising too early), so I imagine there's some kind of reference floating around somewhere, but I can't see where, and what would be super helpful would be the ability to debug and see a list of objects that reference the target object. Is this at all possible, and if not natively, is there some light-weight way to code this into future apps for debugging purposes?
I have a 2-dimensional array of Objects. Their location in the array determines where they appear on the screen. When I want to move an object down, I am trying something like this: [AS]LocationArray[i][j+1] = LocationArray[i][j]; LocationArray[i][j] = null;[/AS]Of course, with the way AS3 handles objects and references, it removes the object completely. How can I simply move a reference (or remove an reference) without destroying the object?
loading external SWF's and its class files hanging around after the movie is unloaded....Its kind of tricky to explain, but you can see it very clearly in this file... http:[url]...Just run the main_stage.fla within flash [mx 04] and you'll see that if you click "Tester A" it will trace out "My Name is Tester A", then if you click on "Tester B" it will load a different swf, with a different class, but still trace out "My Name is Tester A" when it should be "My Name is Tester B"....
I have tried, unloading the swf's, removing the mc_Dropper and re-attaching it, re-declaring the variable testObj as null before declaring the class,
I am a new flash developer and I cannot seem to understand this problem. Whenever I try and trace one of these variables of type XMLList they all return NULL except for the last one in the array.The createDatsSets() function is designed to pull XMl data and copy it to an variable of type XMLList which resides in an array. This should happen 8 times to add data to all 8 variables.It works fine with a single variable but, in the for statement when.I try and trace any of the variables in the xmlList array only the last one has XML data in it.
I'm trying to get my head around optimising AS3 code and clearing things out for garbage collection.
I understand that each time an item is referred to in the code it has its reference count increased by one, so I was wondering if there is a trace option I can use to see how many references each of my objects has?
I can then see where things are getting left behind (if they are) and where I can make optimise better.
I think it would help me work out several issues if I was able to do this
I was thinking about Flash GC the other day and came up with a question about how reference counting would work in the following 4 class scenario (assume GuiMain is the movie's document class):
It seems that dropTarget only returns the name of the object that is directly under the mouse. Does anyone know whether there is a simple way for it return the name of the object that is under the entire bounding box of the object being dragged?
I want to load two picture and add every picture to every sprite object,such as picture a to sprite1 and picture b to spriteb,I know I can load a pictue by following code:
loadImage('a');loadImage('b');private function loadImage(imagePath:String):void { var loader:Loader = new Loader(); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onImageLoaded); loader.load(new URLRequest(imagePath));}private function
I want to load two picture and add every picture to every sprite object,such as picture a to sprite1 and picture b to spriteb,I know I can load a pictue by following [code]...
I'm trying to create a function that determines which of 4 similar classes to create, and returns the new object itself.
Basically, I have a base class (Panel) that has 3 additional variations in layout, each of which has a subclass: TextPanel, FeaturePanel, and LinkPanel. The two parameters for my function are the "kind" of window to create and its name ("linkString"), both of which are provided by external XML. I'm wondering if it's even possible to return the new Panel as an object...?
My code will probably explain this better than I can:
Code: // create the new Panel variable ("addPanel") with a call to newPanel: var addPanel = newPanel(linkList[i].attribute("kind"), linkString); Code: // newPanel function:
[Code].....
within the Panel constructor, the provided string (linkString / 'h') is set as the Panel's .name. I did not copy that function into the subclasses, since they inherit it - unless I'm mistaken.
I want to assign an existing Object all the vars of a prototype Object, without a direct reference. One way to do this is:
[Code]...
This way both Object's values for .nom and .age can be independently changed, but it's tedious. Is there an automated way to assign all of protoObject's vars to enObj?
I got canvas objects stored in an array. Every canvas has it's name property.Is there a way to return a specific name?Actually I need an index number from that array, where I pass a name property of object inside this array (name is taken from event). Something like this:x = array.indexOf (canvasName=event.currentTarget.name)
I am trying to move text movies and textfields around a stage. This is a learning curve for me. I am confused by an example I have found on the internet.
I am new to actionscript and doing some research on it and stumbled upon this situation.[code]...
However, I expect that currentFig would contain a reference to a Figure object created in AddFig method, but it's not. What am I doing wrong? Why does an object exist only within a method?
I'm wondering if it's possible to return a const reference in AS3 in the same way you would in C++? I have a class with a movieclip inside and at the moment I'm returning it like so.[code]This works fine however I noticed this then allows access to the movieclip's attritbutes so then it'd be possible to do something along the lines of myClass.clip.x = 5 which I kind of want to avoid!Is it possible to make returns read only? I know it works for primitives.
I have a CSV reader class that parses a CSV file..... 1,11.15126526 2,11.28306635 3,10.78296071 4,10.79878325 The CSV reader class works and produces a Vector.<Point> ... However the container class (which includes an instance of the CSVFile class) needs to access the resultant Vector. Whenever I 'return' the Vector.<Point> to the container via a CSV method it is always empty...I don't know if its something to do with the size of the Vector<> or what?
The issue i'm having is that i want to have dispersed code-generated stars, and then they form a form (reindeer, santa, etc).
The idea is how i make the stars disperse and then return to their previous positions, knowing that the initial positions were randomly generated as well.