ActionScript 3.0 :: Pass A Child From The Constructor To Another Function?
Sep 6, 2010
I'm sure that I'm doing something daft here - I just need to remove a child that's created in the constructor through an event listener.My code is below but does not work. Can someone point me in the right direction please?
public class Main extends Sprite public function Main()
super();
var rectangleIndex:uint = this.getChildIndex(playerBackground)
I´d like to know how could use the Timer class extended.I´m trying to pass a parameter to the constructor function, so I can use it inside the listener.
Here´s example:
[CODE] package { import flash.utils.Timer import flash.display.DisplayObject public class ChangeColorTimer extends Timer { public static const CHANGE_COLOR:String = "changeColor"; public var obj:DisplayObject public function ChangeColorTimer(delay:Number, repeatCount:int, obj:DisplayObject ) { super(delay, repeatCount) this.obj = obj } } } [/CODE]
That was the ChangeColorTimer that extends Timer.Now, I´d want to know how would I use ChangeColorTimer.I thought it was the same as using Timer.I´ve tried this:
[CODE] public function changeColor(mc:MovieClip):void { var colorTransform:ColorTransform = new ColorTransform() colorTransform.color = 0xEE0000 mc.transform.colorTransform = colorTransform var changeColorTimer:ChangeColorTimer = new ChangeColorTimer(400, 1, mc) changeColorTimer.addEventListener(ChangeColorTimer.CHANGE_COLOR, setNormalColorListener) changeColorTimer.start() } private function setNormalColorListener(e:Event):void{ trace("called") } [/CODE]
I called changeColor, but, I don´t get "called" in the output from the setNormalColorListener listener.
I have the Class and the parameters of its contructor as an object. What I need to do is a function that returns an instance of this class, passing this parameters to the constructor.
This is the code: Some random and unmodifiable class:
public Foo { public function Foo(a:int, b:String) { // constructor } }
And some function (in some another class):
function bar(params:Object):* { var baz:Foo = new Foo(params.a, params.b); return baz; }
What I need to do is make this function generic, without pass params as parameter to Foo constructor because I can't modify it. Something like:
function bar2(clazz:Class, params:Object):* { var baz:* = new clazz(/*some magic way to transform params in comma separated parameters*/); return baz; }
I'm passing a DisplayObject to a command that will instantiate it. Something like this:
// ViewClass is passed into this method typed as a Class var view : DisplayObject = new ViewClass() as DisplayObject;
Is there a way to pass arguments to ViewClass() without knowing it's type? I'm assuming the list of parameters passed to any object's constructor is an array, but I'm not certain how to proceed.
I know I can do something like this:
// Assume arguments, an Array of arguments, has also been passed in var view : DisplayObject = new ViewClass(arguments[0], arguments[1], arguments[2], arguments[3], arguments[4]) as DisplayObject;
But clearly I'd like something more dynamic, like to be able to just pass the arguments Array directly. I suppose all of this, however, goes against any type safe checking
I have a bunch of movieclips( clip A and B for this example) in my library that I want to use the same base class (MyClass.as in my example). I assigned the same base class in each clips property window and then gave each clip a unique class name which doesn't exist so flash says it will create the class automatically.
Now if I create a bunch of A's and B's on the stage via actionscript, how would I send variables to the constructor in MyClass.as without having to creating A.as and B.as to pass the variables along to the base class? if I do: Var newA:MovieClip = new A (argument 1, argument2, etc) It says it expects 0 args since the A & B classes were created automatically by flash.
when to use this in a classes?is there any specific rule?is it wrong to use this when you want to just access the stage that way?or is it better to pass the reference to the stage in the class constructor?
I have a timeline instanced movieclip which i'm calling a method on its parents movieclip constructorproblem is that even though the object already exists, its methods are "undefined", i have put some traces in, and noticed the child constructor is calling after its parent constructor..
Is it possible to pass constructor arguments to instance objects which I place on the stage? Are the instantiations of instance objects centralized somewhere as with .NET WinForms so I can just edit the xxx = new CustomRecangle() constructor?
public class CustomRectangle extends MovieClip { public function CustomRectangle(width:int, height:int) { this.width = width; this.height = height; } }
I've got a function wich can accept a varible number of parameter with a rest operator. I want create an object passing the argument collected with the rest operator directly to a constructor without create an object and call an initializing function and without passing the entire array but the parameters ah I do with apply() function.
For example, I have the class Bullet, with a constructor: Bullet(start:Point, target:Point)constructor
But, if this Bullet class extends the MovieClip class, how do I pass start and target into it? Right now I am using attachMovie to create instances of the class. (They behave correctly with the static properties set by the constructor, but to be useful it needs arguments.)
I'm making a Flash game and have a Parent MovieClip into which Child swfs (levels) are loaded. The Parent has an inventory system that will store the objects found in the Children. Of course, to do that, I need access to the each Child's base class and all its assets, so I use GetDefinition. Everything was fine before I bumped into a weird problem: it calls the Child's constructor twice. Before I go further, here's the code stripped down to its simplest form.
I have a parent and 2 children. I am trying to pass data from child1 to child2 but keep getting an error message: 1061: Call to a possibly undefined method through a reference with a static type.
In child1 I have the following code:
[Bindable] public var TestVar:String='sometext';
In child2 I am trying to get the value of TestVar and then use it as a value to search a mysql database via php.:
var newTestVar:String = child1.TestVar; if(newTestVar != null){ getResult.token = someService.get_filtered_Paged(newTestVar);
I dont know if that is normal, but this code create an infinite loop, because when i create a new instance of class Two, because of the extends, the class One constructor is called again, and creating a new instance of class Two, and so on...I know how can i get this fixed, but, what i want to know is, this is correct? Its a Flash bug? Isnt that way in AS3?
here is the scenario we ran across while working on our Flash AS3 project today.
/main/root.fla /main/root.as /main/sub1/sub.fla
[code]....
We have many sub swf's that are loaded by the main root swf. The root swf shows the art on the stage of the sub swf, and also runs some code from the sub swf's document class. However, we noticed the constructor was not getting called on the second sub swf if the document class is the same name- even if they are in different folders. Note that we publish our swf files to a separate directory (with the same structure as above) so it is easily copied to the web server.
-root.swf loads sub1/sub.swf -the constructor of the document class sub.as in subfolder sub1 gets called -root.swf shows sub1/sub.swf assets with the correctly constructed sub1/sub.as document class -user chooses to switch to sub2
[code]...
We decided to use a workaround where we basically changed the two document class .as files to be different names (e.g. renamed sub1/sub.as -> sub1/sub1.as and sub2/sub.as -> sub2/sub2.as, and updated the .fla's to point to the renamed document classes), and it works as expected. Hopefully that workaround is useful for someone.I realize most people just name every single file differently and keep everything in one folder, but when you have a sufficiently complicated project, things like this come up.
I know the topic of "duplicating" movieclips is a hot issue with the new virtual machine. Luckily, I understand the implications. I only am [currently] interested in duplicating a Bitmap. See, I load an image from an URL using 'flash.display.Loader.load', which is a non-blocking operation in Flash Player.However,I may use multiple copies of the loaded image (which is reported to be a Bitmap, naturally) in the display list at the same time.Hence, I naturally do not want to load the image from an URL every time, because I don't want to wait for a non-blocking call to complete. Nor do I need to - I mean one copy is already loaded, so it should be possible to just "duplicate" it, right?
My idea is to do use the bitmapData property of a Bitmap and pass it to the constructor of a new Bitmap object. I have not tried the following in action, but I want to hear whether any of you did and if the following would not work, what would:
Code:
var original_bitmap: Bitmap; var copy_of_original_bitmap: Bitmap = new Bitmap(original_bitmap.bitmapData);
LiveDocs mention that the BitmapData being passed to a Bitmap constructor is "being referenced", which to me might suggest it cannot be used twice? There is also the BitmapData::clone() method, which I am not sure is applicable here or not.I know this is a lot of talk instead of just trying this out, but I test so much Flash Player code daily just to see "what works" (which should be documented instead by Adobe),
I'm making a class called 'player', and really, I don't need a constructor function for it. Do you just outline the function, but don't put anything between the curly braces? Also, I'm a bit new with access levels. If I wanted my functions from my player class to be accessible from the main class, do I make them public?
Basic OOP question... I want to add a couple functions to the Array class so that my program will be amazing and make me rich and famous overnight. So I create a new subclass NewArray which extends Array. Do I need to write a constructor method for NewArray? If I leave it blank will it just use the parent's (Array's) constructor method?
I am trying to make a subclass of flash.display.Loader, which should do something when the loader completes loading the content. So I do addEventListener(Event.COMPLETE, onComplete) on my loader subclass. But this Eventlistener is never called. Is this supposed to happen? Can't I use an Eventlistener on the class that dispatches the event? My code looks like this: public class MyLoader
is it possible to get the name of a calling function or the constructor from the called function? is it possible to determine the previous function of the thread?
i would like to call some setter functions from my constructor and have my setter functions determine if it was the constructor that called them.
currently, i'm setting a boolean for this functionality, but perhaps there is another way?
public function Constructor(myNumber:Number) { this.myNumber = myNumber; }
I have a document class name elevator and my constructor is also elevator as usualHow to call this constructor function within elevator class? Is is possible or not?
I have a series values I'm passing (from an FLA) into the constructor of a class. I just want to make clear in my mind that, the only way to pass the variable params, to the function nowDoThis, you'll need a dispatchEvent or a custom event to send it along ?
As an example:
Code: // constructor public function MyFunction(_param1:uint, _param2:uint, _param3:uint) { param1 = _param1; param2 = _param2;
[Code].....
I have only a vague understanding of using objects and dispatch events. Isn't this something that people need to do all the time?
Simplified ItemType Code, contained in Types/ItemType.as
Code: public class ItemType { public static var SWORD:ItemType = new WeaponType(0, "Sword", null); public function ItemType(id:uint, name:String, icon:Sprite)
[code]....
On attempting to compile, following error is displayed:
Code: [Fault] exception, information=TypeError: Error #1115: Types::WeaponType is not a constructor.
I'm currently writing a class where I'd like to call the class constructor without having to instantiate the class itself. Something like this : Class:
[Code]...
trace(testString); //wil trace the text "test test123" Is it possible to somehow achieve this? When I write the costructor method like "public static function ClassName" it fails. Is there any other way?
I am new to AS3 and writing classes and keep having a hard time with these error messages I am getting. I have the following AS: public class PrevNextNav { public var back_next_nav:MovieClip; public var next_btn:SimpleButton; public function PrevNextNav() { back_next_nav.next_btn.alpha = .3 } .... etc.
The class works fine, except when I try to set the alpha to 30% in the constructor function, I get this error in the output window. TypeError: Error #1009: Cannot access a property or method of a null object reference. at _classes::PrevNextNav() at InteractivePilotDocument() If I comment that line out, all is good. What does this mean?