ActionScript 3.0 :: Referencing Parent When It Could Be Of Any Class
Nov 17, 2010
I usually would call the parent of my class by something like:
MyCustomClass1(parent).thisFunction();
My problem is this works if I know the class of my parent. How do you handle the case where you class could have a parent of 2 or more possibilities?
parent.thisFunction(); // throws error of course
A have two classes: Main and Navigation. I try to referenceobject in Main class from Navigation class based on the buttonnumber I clicked. Doesn't work as I want it to work. What can I do
I'm currently making a platform game and when the player shoots i want to add the bullets to the stage. The players gun class is in charge of adding bullets. The "players gun" is a child of "players gun holder" which is a child of "player" which is a child of the stage. is there a better or more dynamic way for the "players gun" to add bullets to the stage rather than using parent.parent.parent.addChild (bullet);
Each of these children has an index value assign to it for the purpose of relating to an XML file, but that's beside the point. Those children have other children eventListeners that call a tween function. That tween function wants to tween the first child.First question: what is the proper syntax for referencing the parent and getting that index value? Does this work, with currentTarget being the child that called the function:var something = e.currentTarget.parent.index;If not, how can I get that index value?Second question: In order to determine which of the first children the tween is applied to, I could write a conditional that checks the index value and tweens based on that. Is there an easier way to do this? And what conditional would work best? I'm thinking if() else() but I'm relatively new to as3 so if there's something more efficient I'd love to hear it
I have an array defined in the main timeline to store some values. At some point of time, I am dynamically adding a movieclip to stage using attachMovie and then using a movieClip.onEnterFrame event to set one of its values by referencing to one value from the main array.(Sorry if the following description sounds a bit confusing. I am attaching a part of the code below to help describe the situation) The problem is that it is not able to retrieve the value from the main array no matter what I try. I tried adding a "_root" befor the array name and the index array id but it did not work. Not only that but the trace shows that it is able to retrieve the index id as well as the full array but not any particular value from the array - as in, trace(arrayname) outputs all the values from that array but trace(arrayname[a][b][c]) gives an output 'undefined'.
I have managed to make it work by creating a temporary variable to store that particular value just before the onEnterFrame event kicks in, but I would love to know why it is not working the way I thought it should. Here is a part of the code. If someone needs more info about the code then please ask and I will give it in the next post (The full code is way too large to be posted here)
ActionScript Code: //------In main timeline var movesNum:Number = 0;
I have a child class that is loaded into the parent class when the swf begins, like so: var myvar = 'hello'; public function Parent() { this.child = new Child(); }; How can I retrieve the variable 'myvar' from within child?
I have a frame that I want to display but the function that calls it exists on the parentHow do I call a frame that exists within a child movieclip from its parent?Here is my code. It is basically for a restart button.Here is the parent function.
I am working on a tool for use in our office which creates XML. At this point I am working on getting an error message to appear when the user enters incorrect data in one of the textfields. I have a MC which contains my error message as well as a button. The button will move the MC back off of the stage. Everything works up to the point where I click the nested button. I suspect there is a problem in referencing the parent MC from the button.Here is the code for the entire project. I am sure there are more than a few errors since I am relatively new to AS
I have this MC attached to the stage with an instance of say: insA, then within this I have another called say: insB, then finally another one within insB called say: insC.so normally to access the third one I would use: insA.insB.insC do something.I have this button within another MC called say: '2ndinsA', so when a button within '2ndinsA' is pressed I need to perform 'something/move' onto insC.
Now within the class attached to '2ndinsA' i have the parent.getChildByName("insA") code and its seemed to grab the 'insA' and I could then move it, but its the insC that i want to move.How can I then reference the 'insC' within that MC )'insA', i have tried several ways but all come up short (errors galore)
I would like to know the way to prevent a child swf from referencing its parent swf stage width/height?
for example, i created a child swf that loads image and center it on it's stage. As a stand alone its fine but i loaded it with parent swf, it centers on the parent swf instead.
Ok, this is one of those walls that I know once I can jump over it, I will be a much happier developer again.
I've done tons of reading, and think I have a firm understanding that the general consensus is that if you want to reference something, it needs to be added to the display list, using addChild().
I hate to be defiant, but what if I don't want to?
Or at the very least, what if I want to add a movieclip class to the stage using addChild, and then reference objects inside it?
It is much easier this way than what most people recommend - adding 15 objects via addChild, then setting the x and y for the, etc.
That said, I'm all about using classes and using as3 the way it was meant to be used. So what this is, is a best practices question I guess.
HERE ARE THE STEPS I'M TRYING:
- Create new flash document
- Draw graphic symbol bg, with text field over it, select them, convert to movieclip symbol, and export class name "box", then delete it from stage
- Add document class .as file, which simply adds that class "box" from the library, to the display list using a simple addChild()
- Set a name for that box using box.name = "test" let's say
- Do a simple trace like the following - "getChildByName('test').textFieldName" - it shows up great
- So then, I'll now try to set the text by doing this - getChildByName('test').textFieldName.text = "yo";
That last line above, is what doesn't work. I know I'm referencing wrong, but how would a pro as3 developer, reference something on the stage within a movieclip class, from the document class?
I need to increment an integer variable in a function within the document class upon transpiring event in another class. I can't seem to figure out how to call the function and reference the variable.
I have an enemy on the stage that reads whether it's being hit by a bullet by a hittest. There's a for loop inside the enemy's class that looks for all the bullets and names the bullet that's hitting it "hitBullet". What I'd like to do have an easy way of seeing what type of bullet is hitting the enemy. I'm basically looking for something like
if (hitBullet == RegBullet) { //do regular bullet dying }else if (hitBullet == ClusterBullet) { //do clusterbullet dying }
, where RegBullet and ClusterBullet are classes. But I have no idea what hitBullet is equal to when a ClusterBullet or RegBullet hits it. I traced hitBullet to see what it would return and got "[object ClusterBullet]", but I'm not sure what that would be in the actual code.
I have a class called Circle and a class called ShapeFade, both with their own .as files. How do I add an instance of ShapeFade to Circle inside the Circle constructor? Like in the Circle file:
PHP Code:
public function Circle () { this.addChild (ShapeFade); }
Also, can I override a class function from the code window in the stage?
I have externalized the actionscript code of a movieclip into a separate class files.This movieclip requires references to some other clips on the stage. What I am currently doing to reference those clips is by using Movieclip(this.parent).otherclip but somehow that feels wrong.Is there a better way to pass in the required references into a class extending from Movieclip inside of the constructor? Or what is the recommended pattern here?
I have a bunch of variables in a class. There are situations when I want to set then to null/ "temp" etc as per a well defined logic. The challenge is to list out the variables at multiple places- tedious and error-prone.
would prefer a way to refer to these variables programatically and set something like "for all class variables- if variable ends in type, set as "not_set"; for other variables set as NaN How can I achieve this?
I can import other classes to the timeline and use them just fine, but this class is giving me major problems? I am parsing XML data from my server on it and it is giving me errors that look like this.
The timeline reference and usage: import networkScores; var network:networkScores = new networkScores(); addChild(network); score1Textfield.text = network.score1.toString(); [Code] .....
The errors I am getting: Scene 1, Layer 'Actions', Frame 4, Line 149 1119: Access of possibly undefined property score1 through a reference with static type networkScores. 1067: Implicit coercion of a value of type networkScores to an unrelated type flash.display:DisplayObject.
I'm working on a game that pulls most of its information from an SQL table. The game itself has several different items that derive from a BaseItem class, and all have widely varying behaviors. While deriving these classes from the BaseItem class and scripting the correct behavior is easy enough, I'm having a bit of trouble trying to come up with an efficient way of storing the information for these items so that not only will the items be in the state that the user left them when they were last saved to the database, but they will be the correct item when loaded from the database in the first place. I'd like to do this with as little pollution of the iteminfo table as possible (for instance, I want a Truck item to have a "wheels" value of 4, but I don't want an item_wheels field on the row if the item is Pogo-stick).
So far, my best idea has been giving iteminfo an "itemtype" field that accepts an enumeration, like ITEM_TRUCK or ITEM_POGOSTICK, and using a switch statement in AS3 to instantiate the correct item based on the pulled value, but this seems rather sloppy.
The thread title says that I want to reference a class directly from a table, but if I knew how to fix this I'd have done so already, so I'd love to hear any solutions. And just for the info: I'm working with a combination of AS3, PHP, and MySQL.
Is it possible to use a class name stored in a string and pass it as a parameter??I'm using the push method in a flex mobile project. I have the name of the view I would like to pass into the push method stored in a string. But the push method only accepts it as a class not a string.How do I use a String to load or pass the class name to the method?
var NameClass:Class = "views.Contact"; navigator.pushView(NameClass);
just thinking out the setup of a sidescroll/platformer..i want the player not to fall through the floor or go through walls i know how to hittest with a single object, but what i have is various objects that extend the class wall. if I hittest with wall will that also apply to the serrated_floor and portcullis classes that extend wall?
I think this is a pretty simply problem but I do not seem to be able to pull it off. Basically I have a parent class A, and a child class B.Class A instantiates class B with addChild.There is a shared object which is being updated from a java server (red5) that has an event listener attached to it in class A.I have a function in class A which will pass certain, specific updates from this shared object to class B.The problem occurs is that when class B is instantiated, the event listener from class A doesn't work anymore. I have not removed the event listener from A.?
Lets say I have a Main Document Class called Main. I also have a child class called childClass that call a function from the Main class and is also imported in the Main class. How should I call the function? I tried this , but when calling the function, it's getting me error.
I have a swf that is loaded into my main swf with the loader class. When I click a button in the main swf I want to call a function in the loaded swf Main class.
When I do a trace it is showing the loaded clip as [object Home] which is the name of the Main document class associated to the loaded swf. I have a public function in my Home.as called startAnimation() but when I try to call it I get
[quote]1061: 1061: Call to a possibly undefined method startAnimation through a reference with static type flash.display:Sprite.
How to access stage elements from within a class. buttonControls.as
Code: package { import flash.display.Sprite; public class buttonControls extends Sprite { // Navigation Hover Color var hover = "0xF1E960"; var normal = "0xFFFFFF"; public function changeColor(object, color){ [Code] .....
and I'm trying to add an event listener and a function to the class, but I keep getting errors of undefined, I tried just about everthing to be able to refference obj0
objGroup.obj0.addEventListener(MouseEvent.CLICK, onClick) private function onClick (event:MouseEvent):void{ trace ("Click"); }
I'm developing a Hygrometer in Flash CS4. The Hygrometer is a Movie Clip currently on the stage with 16 Movie Clips inside with instance names like segment01_mc, segment02_mc.. segment16_mc. I'm trying to make a class for the Hygrometer MC and I need to access the "segment" MC's. But I can't find a solution.
Is there any way to reference the "segment" movie clips? How can I assign instance names to the "segment" movie clips?
how do I reference a dynamic text field in my fla file from a class which isn't the document class? For example: I have an fla file called main.fla which contains no actionscript and has a single dynamic textfield called "text_txt" on the main timeline.