2013-03-15 60 views
0

我在AS3对象和定时器AS3

约TIMER一个问题,我有我的舞台僵尸对象,我想他来攻击英雄。

我想要做的是:

  1. 僵尸走路朝英雄
  2. 当他是足够接近的攻击,他继续攻击。
  3. 问题:我希望他每1秒只攻击,这样英雄有机会打回他。问题是我对计时器不熟悉,而且我仍然找不到任何能够帮助我的提示/内容/答案。我不知道我应该在哪里放置定时器,在新的定时器功能或我的僵尸功能。

谢谢:)

这里的代码

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 

    } 
} 

回答

0

你可以做这样的事情:

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 
} 

我希望这将帮助您解决问题

+0

非常感谢!这对我有很大帮助! – Briandito 2013-03-19 04:49:43

0

你应该定义“闲置”,“行走”和你的僵尸“攻击”的动画,到目前为止,我只看到你的僵尸切换成“攻击”姿势并待在那里。另外,让你的僵尸变成一个班级,这样它就可以控制自己的动画,知道什么时候发起攻击,什么时候停止攻击(回到空闲动画)。最后,有一个标志“这次僵尸攻击可以再次发生”,当僵尸攻击时它将被设置为true,并且用适当的参数调用flash.utils.setTimeout()来调用一个函数来重置该标志。这个基于时间的函数可以用于简单的一次性调用,直到您更好地学习ActionScript。

+0

我有“走”和“攻击”的立场,我想我不需要“闲置“,因为僵尸会一直持续下去。但是,多亏你,我知道我错了,非常感谢! – Briandito 2013-03-19 04:52:14