ActionScript 3.0 :: [CS4] : Dynamic Reference To Classes?
Dec 9, 2009
Been trying to make the transition from AS 2 to 3 but not without it's speed bumps. My first major hurdle has been trying to dynamically reference a class by only knowing it's name. I came across the code of import flash.utils.getDefinitionByName; but that's not working for some reason. It keeps giving me the error:
Quote:
ReferenceError: Error #1065: Variable characterType5 is not defined.
My code in getting this is:
PHP Code:
import flash.utils.getDefinitionByName;
var className:String = "characterType" + 5;
var tempClass:Class = getDefinitionByName(className) as Class;
var char = new tempClass();
classes. GiftMain and GiftItem. i attached GiftItem objects into GiftMain. Actually there are 2 more movieclips between them. i declare a variable in GiftItem as giftMain to reference it to the GiftMain. i have a function in GiftItem which is as below;
[Code]...
trace outputs the right object in this function in GiftItem class but at another place in the same class, it outputs undefined when it is traced even though it is global variable. I just want to reach GiftMain from GiftItem without using _parent or _root. How can i do that?
I am trying to load the movie clips in my library one by one, using a for look and tween them but it seems as i am getting an error Stuff in my Library
Is there a good way to dynamically reference a class that is created inside of another class?
Say, for instance, I have a main class called "Country", and from that class, I am creating individual "State" classes. So the Country class is creating State classes named "Texas", "Ohio", and "Iowa". And each State class has a value called Capital. [code]...
am trying to get a movieclip in one class to stay at the same x and y value of a movieclip in another class. the arm is meant to stay on the player's mc in armClass.as .here is the code.
I'm adding many custom classes on stage using the object.registerclass trick. Those classes all implement the same interface so I can call common functions for all of them. My problem is that I have many of those custom classes for which I keep a reference in the class where I'm attaching them to the stage with attachmovie. So, in this parent class, if I do a for in loop like this:
I'm loading a bunch of SWFs at the same time. I'm using a custom class to do the loading. Most of the time they all load OK, however occasionally one or two will be unloaded (I can see that in the console) before we get to the Event.COMPLETE. The ProgressEvents are all fine - I can see them loading, but then boom - they're unloaded.
I've done a bit of digging around and discovered that this may be a bug in the Loader class where if you are using multiple instances of the class then sometimes one or more will be Garbage Collected before they finish loading and are therefore unloaded. I've tried keeping a reference to the loader and the classes holding the loaders and I'm still having the problem. The solution is to queue the loads and load each swf in order which isn't a problem, just a bit irritating.
TypeError: Error #1009: Cannot access a property or method of a null object reference. at com.common::stageConfig() at cloudsMain() CloudsMain.as which is attached to the .fla
[code]....
Basically I'm trying to create a class that I can call and centralise any mc on stage by eg.stageConfig.centralisedDO(my_mc), However I encounter the above error.
I have a site with ScrollPanes, that are calling a Class on what to display. (so the movieclip that I want displayed in the ScrollPane has a Class name.) Within that movieclip (webScroll) that is being displayed in the scrollpane, I have 2 other movieclips (web1 & web2), with unique instance names and eventlisteners targeting those instances. when I preview my site, i get this error: 1119: Access of possibly undefined property web2 through a reference with static type Class.
I have a dynamic group of movieclips... these fade in/out on rollOver/rollOut. During the rollOver they reference an index in the legendArray. In the legendArray each index has 5 digits (0 = off, 1=on). Over each "bg" mc are a series of 5 dynamics mc's ("dt" mc (see eg.jpg)), which are to change tint via tween, depending on the legendArray index. I have been able to associate the btn("bg" mc) with the proper legendArray index, but for some reason I'm having difficulty associating the legendArray index to the "dt" mc. As it stands, I keep getting error 1069.
I'm building an application where it would be sweet to use dynamic instantiation of Classes.I'm using "flash.utils.getDefinitionByName" to get this done and, if I instantiate the Class in my code once, there is no problem at all.But, I want to be able to do this without instantiating the Class at least once before I go with the getDefinitionByName method.I'm using Flash Develop and the Flex SDK, coding with pure AS3.Is there any way to instantiate the Classes only dynamically?Or, any alternative to the getDefinitionByName method?
I really like the fact that dynamic features are available in Flash, despite their slowness.With that said, is there any way to "auto detect" when a new property is being added to a dynamic class?I'd like something along these lines:
Code: public dynamic class Detector extends EventDispatcher {
I have four movie clips in my library that are defined as classes: Option0, Option1, Option2 and Option3. I have four buttons that pass a different value from 1-4 to a function. I want to add the clip to the display list that relates to the passed value. In AS2 it would go something like:this.attachmovie["option"+currentVal, "newOption", this.getNextHighestDepth()];
I'm making a program so that you can plug in your birth year and get some basic information on what Chinese year you were born in (Year of the Dragon etc).I created a class, linked it to an MC and looks like it is creating everything okay but the input text is definitely buggy.I can input text at the top of the stage but not in the actual text field.I have spent a lot of time on this and am completely clueless as to what is bugging this thing out.I guess I am not declaring something properly but I've had my TA take a look at it as well and she cannot figure it out. [code]
From what I hear, getting/setting dynamic properties is a lot slower than regular properties.
But does allowing a class to be dynamic slow down the entire class for regular property getting/setting?
For instance, let's say I have this class (pretend those properties have setters as well):
Code: public dynamic class Hero { public function get endurance():int { return _endurance; }
[Code].....
Obviously, calling and setting the "magic" property will be a lot slower, but will all properties become slower to get/set just because the entire class is set to dynamic?
Is it better to not set the entire class to dynamic, and instead create a new dynamic object, "additionalStats" where properties can be get/set to instead?
I've been trying out small snippets of code just to practice with and get comfortable with making classes and small games.Right now I am trying to make a simple combat with Orks. Where there is a Parent Class ORK with several ORK children classes like SentryOrk, MetalOrk, etc.
The Ork class basically puts in the many stats used by the ork such as health, strength, vitality, special, luck, etc. And then the children classes modify those like Sentry Ork will have less health and more luck.I did all that fine, but the problem I have is I want there to be multiple Sentry Orks out with their own defined stats.Right now whenever I do initiate the attack one out of three orks on the screen, they all share the same health.I know what the problem is, I just don't know how to go about dynamically making each class their own?Do I have to make a whole other class to bring them onto the stage with their stats like create a new class that handles all ENEMY POP UPS? I don't see how to do that either?:
I was wondering best practices for views of inherited classes in PureMVC in this situation: Multiple classes inherit a BaseClass (lets say InheritedClass1 and InheritedClass2) Each InheritedClass has a respective view (derived from a base view class, but each unique) With a given dataset (lets say ArrayCollection of InheritedClass1/2 Objects), the respective views need to be dynamically loaded. The dataset is relatively large, so a TileList would be nice (since it only instantiates objects which are currently displayed) I can think of a couple solutions, but I find them to be too "hackish" to be the best solution:
In View: Repeater over a BaseClassView which attributes a view to a State (set to the "InheritedClass1" state to add a InheritedClass1 object) Pros: No unneeded memory increase (States' objects are instantiated when needed) Cons: View is dependent on the data types, so adds coupling In Mediator: Loop over the ArrayCollection and addChild() the views based on data type Pros: Works. Cons: Mediator is adding things to the View, which defeats the point of the separation of Mediator and View. Slower than a Repeater.
The sound I wanted to stop or play are separates into background music and button sound effect. I know you could use SoundMixer.stopAll() to stop all sound, and some how exclude the bg music, IF everything is written in the same class. But what if the sounds are called from others dynamic classes? How could I target them and exclude the bg Music?
How do you preload dynamic classes which loads its own content? cause theoretically speaking the classes doesn't have a size yet until it loads its content right?
I have 9 MovieClips on stage (p1, p2, p3...), different colors and sizes. I have one AS3 class -Snake- that as an instance is supposed to duplicate one of these MC's as a Shape. The reference to the specific MC is supposed to be on the constructor method. These instances are supposed to be triggered from one global Enter.FRAME event.
My question: How can I refer a distinct MC from within a class? I ask this because this MC will be dynamic and its properties ever-changing (position and color). I know this can be solved by adding distinct Enter.FRAME listeners per instance, but I'd rather avoid bad practices.
how does one reference a MovieClip instance dynamically in AS 3.0? Example, I create a new instance of a "marker" MovieClip class that inherently has within it a series of embedded MovieClips labeled: "m1", "m2", "m3" etc ... and I want to be able to dynamically reference those embedded MCs.I used to do this all the time in AS 2.0, and can't recall how to do it in AS 3.0.I know it is something like this:
number = 1; marker = new StaticMarker(); var thisMarker = this.marker.m[number];[code].........
I am having trouble dynamically changing the reference to root in my movies. Here's what I'm trying to do: I have a main movie(_level0.mainMovie) that I am loading external .swfs into. However, I want to be able to test the child movie clips without having to load them into the mainMovie(for testing purposes). In such a case, the child clip would be at _level0 or _root. I would like to add some code to the child clips to test whether they are the _level0 clip, if not, then I want to change their reference to _root. Here's what I've come up with, which doesn't seem to work:
ActionScript Code: function testLevel(){ //This code goes into each child clip to see if it has been loaded into another clip
I'm having some problems on how to reference dynamically placed buttons. I am building a shopping cart and for every item in the cart a movieclip is duplicated and next to this movieclip I duplicate a few buttons (to delete and add an item)This is the code:
Code: var id=0; //this value normally comes from the database var amount = 10;//this value normally comes from the database
getChildByName("name") works great if my object has been added to the stage or some MC. But what can I do if I have an object created dynamically that I want to reference later in the code but haven't added to the stage? Here's an example:
for (var a = 0; a < 10; a++) { var testObject = addChild(new BlankMC()); testObject.name = "myTest_" + a; }
[Code]....
This returns my BlankMC instance, but ONLY because it was added to the stage. If I don't use "addChild", then I get "null" because my instance is not a child of the stage (or anything else as far as I know). Is getChildByName the ONLY function for referencing a dynamic element?
I have a number of identical movie clips that are generated in responce to an XML file. I'm trying to reference a specific one of these movieclips after a sound file stops playing How do I call up that specific movieclip? How can dynamically created objects be referenced through the actionscript?
PHP Code: for(var i = 0; i < 3; i++){varnew test() addChild(a); 150);