Подтвердить что ты не робот

ActionScript-3 не может иметь несколько конструкторов?

У меня

    public function Shard() {
    }

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

И я получил второй конструктор:

Множественные определения конструктора найденный. Конструктор не может быть определен в код.

Итак, ActionScript-3 не может иметь несколько конструкторов?

4b9b3361

Ответ 1

Нет, у вас не может быть несколько contructor ни одна и та же функция с другой сигнатурой, но вы можете использовать аргументы по умолчанию:

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

то вы можете вызвать new Shard() или new Shard(100) или new Shard(100, 200)

или вы также можете использовать переменные аргументы:

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

Ответ 2

Это даже шире. AS3 не имеет никакой поддержки для перегрузки функций.

Вы можете моделировать внешний вид нескольких конструкторов с параметрами по умолчанию и/или динамически отправлять параметры различным методам init. В качестве альтернативы, могут быть созданы специализированные объекты или статические методы создания.