Объект и таймер AS3

У меня вопрос о ТАЙМЕРЕ в AS3

У меня на сцене есть зомби-объект, я хочу, чтобы он подошел и напал на ГЕРОЯ.

то, что я хочу сделать, это:

  1. зомби идет к герою
  2. Когда он подходит достаточно близко, чтобы атаковать, он приступает к атаке.
  3. проблема: я хочу, чтобы он атаковал только ОДИН РАЗ каждые 5 секунд, чтобы у героя был шанс нанести ему ответный удар. Проблема в том, что я не знаком с таймером, и я до сих пор не могу найти никаких советов / подсказок / ответов, которые могли бы мне помочь. Я не знаю, где мне поставить таймер, в новую функцию таймера или в мою зомби-функцию.

Спасибо :)

вот код

if (zombie.x>hero.x+50)
{
    zombie.x-=5;
    zombie.scaleX=-1;

    if(zombie.x<hero.x+100){
        zombie.gotoAndStop("attack"); 
        //so that the zombie attacks when the hero is in range

    }
}

person Briandito    schedule 15.03.2013    source источник


Ответы (2)


вы можете сделать что-то вроде этого:

var timer:Timer = new Timer(5000);//that's 5 second

if (zombie.x>hero.x+50)
{
    zombie.x-=5;
    zombie.scaleX=-1;

    if(zombie.x<hero.x+100){
        attack();
    }
}

function attack(  ) : void
{
  // attack the first time
  zombie.gotoAndStop("attack"); 

 //than launch the timer
  timer.addEventListener(TimerEvent.TIMER, repeatAttack );
  timer.start();
}

//will be called every 5000 ms == 5 sec
function repeatAttack ( event : TimerEvent ) : void
{
 zombie.gotoAndStop("attack"); 
}

//if you want to stop the attack you can use this function for example

function stopAttack() : void
{
   timer.removeEventListener(TimerEvent.TIMER, repeatAttack );
   timer.stop();//stop timer
   timer.reset();//resetCount to zero   
}

Надеюсь, это поможет вам решить вашу проблему

person Community    schedule 15.03.2013

Вы должны определить анимацию «холостой ход», «ходьбу» и «атаку» для своего зомби, пока я вижу только вашего зомби, который переключается в «атакующую» позу и остается там. Кроме того, превратите своего зомби в класс, чтобы он управлял своей собственной анимацией, зная, когда атаковать, а когда прекратить атаку (возврат к анимации ожидания). И, наконец, установите флаг «может ли этот зомби атаковать снова», который будет установлен в true, когда зомби атакует, и вызовите flash.utils.setTimeout() с соответствующими параметрами для вызова функции, которая сбросит этот флаг. Эта функция, основанная на времени, подойдет для простого одноразового вызова, пока вы не изучите ActionScript лучше.

person Vesper    schedule 15.03.2013
comment
У меня ходьба и атакующая стойка, я думал, что холостой ход мне не нужен, так как зомби будет продолжать и продолжать, не останавливаясь. Но благодаря вам я знаю, что ошибался, большое спасибо! - person Briandito; 19.03.2013