ActionScript 3.0 :: Access Instance Name Through Class?
Apr 26, 2010
I have a movie clip with a dynamic text box with an instance name inside. The movie clip is linked to a class, but when I try to access that instance name through that class it just returrs null.
I have to admit I pretty much ran away from Flash when AS2 came along and only used it for animation purposes over the last 5 years.So I'm having a major crash course in AS3 in Flash CS3 and I'm not enjoying it one bit. I'm getting maybe 10mins of finished work per hour as I try to figure out the limits and rules of AS3. Quite often it seems that AS3 simply can't do what I want it to. Anyway: Characterchecks.as is the main class and it loads a bunch of XML into four arrays. The file starts like this:[code]If I trace the value of, say, cc._Categories from the main FLA, it's empty. I'm guessing that the next line of AS in the main FLA doesn't wait for the previously called function to complete? (This may tie in to my next problem)My next step is that I want to display various things based on the data in the array. I have another class, Display.as which will hold all the functions to create the items on display. I thought it would be best for these to be a separate object. I wonder if I'm right?
So I declare an instance of Characterchecks in the main FLA and call it cc, and then run the functions to populate the arrays... Now I create an instance of Display and call it cd. How can I get functions in cd to see the values of the variables in cc? And if the main timeline can't tell that the functions aren't finished filling the arrays, how is cd supposed to know?I might be asking dumb questions, or maybe I'm doing things ***-backwards, I don't know. I'd appreciate any help, I really would. This whole thing has me at the end of my tether... being the most technically advanced person in my circle of co-workers and web design friends means I have no-one to explain why things need to be done a certain way or what the best way is.
I currently pass a reference to my model through the constructor to any class that needs it in my simple mvc pattern, this can get annoying at times when it starts to go deeper.
How do Classes such as LoadMax allow you from anywhere to simple import the class, and do something like addChild(LoaderMax.getContent("bg"));? Replicating this should surely be a good way to have my model work, without the complexity of big frameworks?
for my current project I am starting to work with AS3 and I have written a ClipManager class where I can define an MC like "mainView" during initialization like this:
clipManager:ClipManager = new ClipManager(mainView);
With my clipManager I can now easily load stuff into the mainView etc. The problem is that I want every button throughout the whole thing to access Class Methods of this instance to alter the mainView
I have a problem with the piece of code that's been annoying me for a week. It should be very simple but all my attempts at a solution somehow seem to get thwarted by an invisible hand that wants me to fail.Here is the scenario: I am trying to create an image strip consisting of image thumbnails. When one mousovers each image it should print its information (say a name) in a textfield.I created an image container class that loads the images through a url request, then an image strip class that receives an array with image names and urls and displays them in a row. So far so good.
However when it comes to showing the info I have no clue how to address which image is being pointed at. I put a variable called imageIndex inside my imageContainer object, then put all the created containers in imageStrip's for-loop inside an array called mgContainerArray. I created a for loop in my fla that goes through this array and assigns all those containers a mouseover event listener. What I'm stumped with is that there is no way I can access the imageIndex variable from my function to tell the code which image is currently being mouseovered. It keeps giving me an error.Here is the code:
I have a class LoadXML which loads and extracts data from an XML file. I am using this data for my Main class by creating a new LoadXML class. I now want to use this data for my other classes but without having to create another new instance of LoadXML. Since global variables dont exist in A3, I tried creating get methods in LoadXML and then returning these values into variables in the desired classes.[code]
What I want to do (and I have high doubts about the possibility of this) is access the creator of a class from within the constructor of that class (without parsing a reference to it).[code]...
The way I've coded it, each instance of a guy class has a mouse even listener on him which listens for a click. When clicked, I find out the tile underneath him, and the surrounding tiles. So far, so good.
When clicked, the guy calls a method in the tile class, like tile.onClick, which tries to say: get this tile, and send it back to a method in the guy class, like moveGuy. Then moveGuy moves the guy to the tile it was told.
Problem:
From the guy class, I call a method in the tile class. To communicate between classes, the tile class method onClick must be static. But if it's static, the method can't refer to "this", because it's a method in the class only, not on each instance of tile. But I need to know which tile was clicked, and send that reference to the guy so he knows where to go.
How do you access a method from outside its class so that the method can refer to "this" instance? OR, how do I find out which tile was clicked without needing any code on each tile instance? OR... how else can this problem be solved?
- click a guy to select him - click an adjacent tile - move selected guy to clicked tile
The way I've coded it, each instance of a guy class has a mouse even listener on him which listens for a click. When clicked, I find out the tile underneath him, and the surrounding tiles. So far, so good.
When clicked, the guy calls a method in the tile class, like tile.onClick, which tries to say: get this tile, and send it back to a method in the guy class, like moveGuy. Then moveGuy moves the guy to the tile it was told.
Problem: From the guy class, I call a method in the tile class. To communicate between classes, the tile class method onClick must be static. But if it's static, the method can't refer to "this", because it's a method in the class only, not on each instance of tile. But I need to know which tile was clicked, and send that reference to the guy so he knows where to go.
How do you access a method from outside its class so that the method can refer to "this" instance? OR, how do I find out which tile was clicked without needing any code on each tile instance? OR... how else can this problem be solved?
Is this problem what getters & setters are for? I don't really understand how to use them yet.
I have a TileList that is fed by a DataProvider. The DataProvider places a source Class (and corresponding MovieClip) into the TileList as visual and interactive objects. [code]...
I have make 3 classes objecthandler, box and nav. Nav is child class of objecthandler, I have make an instance of box into objecthandler and now I wanna access property of box through nav. See the code: Objecthandler class package code{ import flash.display.MovieClip import code.box import code.nav [Code] .....
Is there a way to get an instance reference to the document class to call a method of it from the stage's timeline?I see that here's a possible solution: using a singletonOther solution I though of is using stage.getChildAt( 0 ) but it's not very nice.Is there an 'official' instance reference? because the document class is obviously instantiated at startup, but is that instance accessible in any way without having to use a custom solution like the ones mentioned?
I've created a class that utilizes setInterval...I call it in a different class...and I can't get it to make the setInterval call. I'm thinking there's a scope problem but I don't see it.
Class w/ setInterval:
Code: class Foo { private var id:Number; public function Foo() {[code]....
The function will get called but I need access to the class's instance variables inside display().
i also write this question in as2 forum, but i need it also for as3i have instance of class "HelloClass" on my main movie :_root.mc.HelloClass.variable1.fullurlso my HelloClass exteds movieclip and has var named Variable1 that also class with var fullurli want to access fullurl string value dynamically , somthing like:_root.["mc"].["HelloClass"].["variable1"].["fullurl"]so i can access every var from external swf
I have a base class which is being created via remote_object [RemoteClass alias] from the server.I have other specialized classes that are derived from this baseclass, but serialization with the server always happens with the base class.The base class has meta data that defines what the derived class is, for example
[RemoteClass (alias="com.myco...')] public Class Base {
I'm using a library that has a function that returns an instance of some class Engine.
I'd like to tack on some interfaces to Engine, so I subclass it class InterfacedEngine extends Engine implements AwesomeInterface. but when I change the code that uses the classes from this:
var engine:Engine = generateEngine();
to this: var interfacedEngine:InterfacedEngine = generateEngine();
It gives me a runtime error (elision mine):
TypeError: Error #1034: Type Coercion failed: cannot convert ...::Engine@1bc2bf11 to ....InterfacedEngine.
I'm creating a little game - The player controls a character that follows the mouse. Pigs run away from the player, and the player has to get them all into a pen. To make the game a little more difficult I'm trying to add an enemy - wolves, that attempt to perform a 'hunt' method every x seconds. This method sends a reference of the wolf instance to Main (my document class) and Main then loops through the pigs on stage to see if there's any nearby. Now as far as I know this works - my problem is I'm unsure how to send the pig instance reference back to the wolf that called the hunt method, so it can then 'target' the pig, and then attempt to pounce on it.
Quick question. I have been Googling this all morning, but it's either not there, or else written in a way that doesn't register. I am inclined to believe the latter, as this seems like it should be something completely trivial to me. I made a small Flash file using AS 3.0, and this is the first time I've really been able to stick to the OOP way of doing things and not hack together a mix of stuff from the timeline to get around not having everything work in the classes.
So I'd like to keep it that way, but one thing is eluding me: I can't call a method of an instance of another class (than the one I'm calling from) without resorting to "DocumentClass(root).instanceName.method." Intuition tells me there has to be a better way of doing this (like, without having to reference the document class every time I call another class instance's function; and CERTAINLY without having to use the word "root" - that just seems so Flash 5 to me. Does anybody have a better way of doing this that they can share?
Is there a way to generate an instance of a class that implements an interface based on the name of the class?
I am trying:
var ClassReference:Object = getDefinitionByName("movement.OuterSpaceMovement") as IMovement; var m:IMovement = new ClassReference as IMovement; trace("startup..." + m);
-But I am getting an error message ReferenceError: Error #1065 (OuterSpaceMovement) not defined.
I have several classes that implement the same interface (IMovement) but I need to be able to generate new instances of these classes and then pass these instances as a datatype (IMovement datatype) to other classes...
So then I tried:
var ClassReference:Class = getDefinitionByName("OuterSpaceMovement") as Class; var m:IMovement = new ClassReference() as IMovement; and this doesn't seem to work...but the following var m:IMovement = new OuterSpaceMovement();
I'm trying to create a new instance of a MovieClip when the original one has been used. Would sound easy enough. Just use: var
instanceName:ClassName = new ClassName();
the class name/mc in the library im trying to duplicate is MCg1 so
var instanceName:MCg1 = new MCg1(); right?
However, the particular object in the library i'm trying to duplicate has a base class that is an external class file (just to control it's drag drop functionality)... i.e baseclass is not set to the standard flash.display.MovieClip, or whatever the case maybe. So i end out with a: TypeError: Error #1009: Cannot access a property or method of a null object reference.