Student
Student

Reputation: 28345

ActionScript-3 cannot have multiple constructors?

I have

    public function Shard() {
    }

    public function Shard(x:Number, y:Number, vx:Number, vy:Number, rotation:Number, spin:Number)
    {
      ...
    }

And I got on the second constructor:

Multiple constructor definitions found. Constructor may not be defined in code.

So, ActionScript-3 cannot have multiple constructors?

Upvotes: 26

Views: 11493

Answers (2)

Gunslinger47
Gunslinger47

Reputation: 7061

It's even broader than that. AS3 has no support at all for function overloading.

You can simulate the appearance of multiple constructors with parameter defaults and/or dynamically dispatching the parameters to various init methods. Alternatively, custom object factories or static creation methods could help.

Upvotes: 12

Patrick
Patrick

Reputation: 15717

No you can't have multiple contructor neither the same function with different signature, but you can use default arguments :

public function Shard(x:Number=NaN, y:Number=NaN) {
  //...
}

then you can call new Shard() or new Shard(100) or new Shard(100, 200)

or you can also use variable arguments:

public function Shard(...args){
 if (args.length==0) {
   //...
 } else {
  //...
  var firstArg:Object=args[0];
  //...
 }
}

Upvotes: 33

Related Questions