ActionScript 3.0 :: Pass Array Of Arguments To Constructor
Apr 17, 2010
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
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; } }
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 am teaching myself AS3 and using FlashDevelop for all of my work (so far so good) and I have hit a snag with passing arguments.What is the best way to pass arguments of one array to another? Ie, I want the Harvester class to have visibility to the Resource class so I can do some iteration.
How can I achieve the following for any number of elements in the arg array? If it was a function, I'd use Function.apply(), but I can't figure out how to do it with the new operator.
var arg:Array = [1,2]; new MyClass( arg[0], arg[1] );
I'm having a weird behaviour with some some classes that I'm making. It seems that the Boolean values from arguments get changed on the way. I have two classes. On is called Carousel and the other Activity. The Carousel main task is to instantiate several Activity objects and place them in a way that resembles a carousel. This part is done, but there's a problem passing arguments from Carousel to Activity. Some data to instantiate the Activity come from an XML file. The XML resembles something like this:
I'm making a game in action script 3. In it, I have an actor class from which player and enemy classes will be derived. I'm doing this so that unless I need to provide specific AI or fancy behavior (such as for bosses), I can just make a new clip in the library for each enemy without making an actionscript file.
However, I've run into a problem.
Whenever I try to pass arguments to the construction of an enemy (make it spawn with more health), I get error 1136 (Incorrect number of arguments.)
This is because the constructor created automatically at runtime doesn't have the same arguments as it's parent class. Is there any way to get around this without making a class file where I copy and paste the parent constructor function for each of my hundreds of enemies?
I've drawn a pretty button in Flash and given it the Class name PausePlayButton. It extends PlayerController, which allows it to toggle on and off and control whether a MovieClip is playing or not.When I instantiate it, I want to pass a reference to the MovieClip it controls into the contructor so that PlayerController has access to the MovieClip's public methods. However, I can't pass a reference into the constructor of PlayerController, unless I can pass it into the constructor of the symbol itself and call super. But where is that constructor? How do I give the button a reference to another object?
I'm having trouble with the constructor for a custom Class tied to a library MovieClip.
Say I have a MovieClip in my library named Circle, which is tied to the class com.shapes.Circle . I want the Circle class contstructor to take 2 arguments, xScale and yScale:
public function Circle(xScale:Number, yScale:Number) { }
However, if I try to call that from in code, for example Circle ball = new Circle(3.14,2.0); , I always get an "Incorrect number of arguments. Expected 0" error.
Is it possible to have a custom class tied to a MovieClip that can take arguments, or does Flash not allow this? I'd asked about this before and thought I figured it out, but from looking at it now I apparently hadn't figured it out and had resorted to a sloppy workaround; I'm hoping to fix it now.
I know what instance variables, contractor methods, local variables and constructor arguments are (I think) but I'm confused as to when or how to use them, for instance I have use this a lot and I don't really understand why it is used like this...
I like finding out about tricky new ways to do things. Let's say you've got a class with a property that gets set to the value of an argument in the constructor, like so:[code]That's not exactly a hassle. But imagine you've got... I don't know, five properties. Ten properties, maybe. Rather then writing out each individual assignment, line by line, isn't there a way to loop through the constructor's arguments and set the value of each corresponding property on the new instance accordingly? I don't think that the ...rest or arguments objects will work, since they only keep an enumerated list of the arguments, not the argument names - I'm thinking something like this would be better:[code]
I have a class with constructor and overloaded methods in it. When i try to import that class using blazeds i get an error saying [RPC Fault faultString="Unable to create a new instance of type 'some class'." faultCode="Server.ResourceUnavailable" faultDetail="Types cannot be instantiated without a public, no arguments constructor."] How to import class having overloaded methods using blazeds
I have been given the requirments to modify a website intro. Basically it has names fly in and out one at a time. Each name that flys in has some text effect on it. They had each name set up as it's own movie clip.
I want to make this more dynamic by putting the list of names into an XML file. Then after reading the XML file, pass each name one at a time into a movie clip. I thought I could set up several different movie clips for the different text effect and then randomly choose one.
I know how to read the XML file, but that's about it.
I need to know how to pass info into a movie clip. I need to know how to call random movie clips. And it would be nice to know how to make it loop through the names and have the effect appear on screen.
I have an instance on my stage that I dragged from my library at design time.This instance links to a custom class who's constructor takes an argument.[code]Is there any way to set arguments on an instance that has been manually dragged to the stage?
I am creating the columns of a datagrid dynamically at run time and I need to allocate the sort compare function to those columns based on the data type of that column, is there a way I can pass some argument to that compare function which could tell the function what type of column is it going to operate on?
I have searched the web for a satisfactory answer and have not got one yet.
Below is a function that has an argument passed to it that I would like to pass on to an event Listener. The listener should pass the variable on to another function. Looking at the structure of listeners this is not acheivable[code]...
I searched the interweb for DAYS trying to find how to accomplish this via an event listener in AS3, but everything I found suggested creating a custom Event. The problem with this, is you have to decide the arguments you wish to pass in advance, and I wanted to create them dynamically on the fly ( for example: passing a string that a user entered into a textfield to some function for processing ).
So last night I spent hours scouring forums - and UREKA! I finally found something that I was able to tweak to send a variable number of arguments of any data type. I've never posted on a forum, but it was such a breakthru that I had to share it with the world.
Here is the code:
btn1.addEventListener( MouseEvent.CLICK, function onClick(e:Event ) { displayArgs(e, new Array("Larry", "Curly", "Moe") ) } ); btn2.addEventListener( MouseEvent.CLICK, function onClick(e:Event ) {
I want to pass through configuration arguments to a class. These are all the optional vars that go into configuring the class - and should be able to run in any order.
at the moment i just pass through the optional vars the regular way. Supposing the constuctor was like the following:
private var _reqVar:String; private var _optVar1:String; private var _optVar2:String;
[Code].....
assigning the argument to the var of the same key (i know in php to reference a variable name from a key you can use $$key = $value, is there an equivalent in as3?) display an error (using the 'throw' method) for variable names not supported by the class
var service:HTTPService = new HTTPService(); if (search.Location && search.Location.length > 0 && chkLocalSearch.selected) { service.url = 'http://ajax.googleapis.com/ajax/services/search/local'; service.request.q = search.Keyword;
[Code]......
I want to pass the search object to the result method (onServerResponse) but if I do it in a closure it gets passed by value. Is there anyway to do it by reference without searching through my array of search objects for the value returned in the result?
I have an object that has all the elements I would want to pass arguments: var args:Object = { 'dog', 11, myArray }; and I want to be able to pass the contents of args to doSomething without making any changes to doSomething (assume it's someone else's function) and I'd like to do it in a way that doesn't assume I will know anything about the contents of args.
Basically what I'm trying to create is a custom timer that uses frames rather than milliseconds. But I can't figure out how functions like setInterval calls the function you passed along with the arguments. First I create a reference to the function I want to execute after a certain interval and name it fc, then I create a list of arguments my function want to pass using Array, but then how do I put those arguments in fc()?