| Tetraeon |
17.03.2014 13:35 |
Передача параметров в таймер
Здравствуйте, прошу помощи в такой ситуации:
Пишу функцию "пинка" в игре, которая заставляет объект-цель отлетать от объекта-источника на определенное расстояние в период действия таймера:
Код AS3:
public static function knock(istochnik:Object, target:Object, knockPow:int, kockRight:Boolean):void
{
target.fly = true;
if (target.x > istochnik.x)
{
if (target.sizeMob < knockPow)
{
sk.timerKnockR.start();
}
}
if (target.x < istochnik.x)
{
if (target.sizeMob < knockPow)
{
sk.timerKnockL.start();
}
}
}
Все это сделанно универсально, чтобы передавать параметры из других классов, но возникает проблема с передачей этих же параметров исполняющему таймеру.
Код AS3:
public static function knockRight(target:Object):void
{
sk.timerKnockL.stop(); // sk - это статическая переменная (не обращайте внимания)
sk.timerKnockComp.start();
target.x += 5 + Math.random() * 5;
target.gotoAndStop("knock_L");
}
Ошибка: [TimerEvent type="timer" bubbles=false cancelable=false eventPhase=2]
ReferenceError: Error #1069: Не удалось найти свойство x в flash.events.TimerEvent; отсутствует значение по умолчанию.
Параметр target не передается, и я не знаю как нужно в таком случае его передать.
Можно было бы создать переменную в этом же классе которая бы принимала значение передаваемого параметра в статическую функцию knock(istochnik:Object, target:Object, knockPow:int, kockRight:Boolean), но в таком случае будит скопирован 1 объект, а так как под объектом-цель будит пониматься несколько объектов из массива объектов в цикле, то этот вариант не подойдет.
|