ActionScript 3.0 :: Tiding Instance Variables With Constructor Arguments?
Jan 28, 2010
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]
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 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'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'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'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.
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 have a library object (SomethingMC) which extends a custom class (Something). Something, in turn, extends MovieClip.If adding SomethingMC to the stage within Flash CS3 IDE, is it possible for it's super class (Something) to assign an instance name from a class constant (Something.THE_CONSTANT)?
The above does not work. It throws Error #2078: The name property of a Timeline-placed object cannot be modified. if the instance is assigned a name in the IDE, and it just doesn't work if no name is assigned in the IDE.
is it possible to obtain the instance name of a class from the class without having to manually pass the instance name as a string parameter to the class constructor?
//Create New SizeClass var big:SizeClass = new SizeClass(); //-------------
Im new to AS3.[code]I have above code in a movieclip which i have Exported as a Class.But when i run it says "Constructor functions must be instance methods".
I have a Sprite in my library that is linked to a class (lets call it SomeClass), and i put on stage in Flash, and name the instance someClass. In my Main.as i then write: var myClass:SomeClass = this.someClass; SomeClass.as has a constructor with the same name as the class, however it require an argument. How do I pass that to the class when I made an instance of it directly in Flash by dragging it to the stage? (instead of the usual ... = new SomeClass(arg); )
I tried something like this: myClass.SomeClass(arg); But that gives me this error: 1061: Call to a possibly undefined method SomeClass through a reference with static type SomeClass.
Is it possible to create an instance of a class without triggering the class' constructor?[code]In the case above, say I wanted to play around with a Foo instance, but I really don't want my global.foobarCount going up, nor do i want to pass in any value at all for bar.This could be useful for introspection where you want to learn more about or pass a particular class object but don't want to provide required arguments or trigger anything that the constructor may do.Is this at all possible? (Obviously, new Foo() just doesn't cut it here, since it would throw and arguments error, nor does just using Foo, since that's a reference to the class itself).
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 am follwoing a tutorial on linda.com about creating a website in Flash everything was going well until i started trying to copy the action script in the online examples now I keep getting this error message and can't figure out how to get rid of it:
Im stuck with actionscript error, the error i got:- TypeError: Error #1007:Tried to create an instance in a no constructor. at Away3dScene/initObjects()
I'm having a problem with customized Actionscript objects not recognizing thier own constructor. This is the pertinant part of my script:
ActionScript Code: //File: Line.as class Line extends Object{ public function Line(args){
[Code].....
Clearly, the variable "testLine", is one of my custom "Line" objects. Clearly, it has been made with the "Line" constructor. So why won't flash acknowledge this?
I am wrapping my brain around OOP in AS2. I am making two posts on two different subjects. My question here is: when should I use local instance variables, and when should I attach new properties to the instance object? (Feel free to correct my terminology.) Let's say I have a class for a scrolling background, which scrolls when I mouse over its edge. I want to put these values somewhere:
1) How wide is the border in which a mouseOver makes it scroll? This is basically a semi-constant I set it up once and keep it the same, unless the user changes it in an options menu to make the border wider or narrower. Call this scrollBorderWidth.
2) How fast is the background scrolling now? I want to track this so I can smoothly change the scroll speed over several frames. This is often changed. Call this scrollSpeed.
It seems I have two ways I can store and access these values and darned if I know which is better practice. METHOD A: Make them local variables in the class, so the scrolling background instance has them as local vars. I set them up thusly: