我对AS3中的TIMER有疑问
我的舞台上有一个僵尸物体,我希望他来攻击HERO。
我想做的是:
这是代码
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 :(得分:0)
你应该在你的僵尸上定义“空闲”,“行走”和“攻击”动画,到目前为止我只看到你的僵尸切换到“攻击”姿势并留在那里。此外,让你的僵尸成为一个类,以便它将控制自己的动画,知道何时攻击以及何时停止攻击(回到空闲动画)。最后,有一个标志“可以再次进行僵尸攻击”,当僵尸攻击时将设置为true,并使用适当的参数调用flash.utils.setTimeout()
来调用将重置此标志的函数。这个基于时间的函数可用于简单的一次性调用,直到您更好地学习Actionscript。
答案 1 :(得分: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
}
我希望这可以帮助您解决问题