AS3。如何在动画期间一步一步地推动敌人?

时间:2014-01-26 20:17:12

标签: actionscript-3 flash animation actionscript frame

我正在制作Flash游戏。这是主要的英雄和敌人。这是一个完全动画的游戏,但我有问题,当英雄在攻击动画时它应该将敌人向后推〜100 px一步一步。 现在我得到了:

单击“x”键开始攻击动画,直接将Enemy的x坐标设置为+/- 100 px。

这是大约100帧,我需要在动画期间逐步将敌人推回(第一帧-1 px,第二帧-2px,第57帧-57px等......)。

这是代码:

if (Hero.leftx <= enemyRight && (Enemy.hitTestObject(Hero))) //here check if Hero have collision with Enemy 
                        {
                        Hero.gotoAndStop("attack" + attack); //start attack animation   
                            Enemy.x += 100; //here push enemy by 100px
                            currentHPenemy -=  10;
                        }

你有想法吗?

据我所知,我需要制作类似的东西,但我不知道如何正确地制作它:

if(currentFrame != totalFrames) {
Enemy.x += 100
}

2 个答案:

答案 0 :(得分:0)

你应该为你的敌人设置一个速度,让它每帧移动一个速度* frameLength。

答案 1 :(得分:0)

在你的敌人类中有一个hitBack()函数,它将一个Event.ENTER_FRAME监听器添加到你的movieclip并将一个计数器设置为0.在enterframe函数中,使这个敌人的sx位置增加1,然后当计数器达到100,删除EVENT.ENTER_FRAME监听器。

public class Enemy 
{
    private var count = 0;

    public function hitBack()
    {
       count = 0;
       this.addEventListener(Event.ENTER_FRAME, myEnterFrame);
    }

    private function myEnterFrame(e)
    {
       if (count == 100) this.removeEventListener(Event.ENTER_FRAME, myEnterFrame);
       else 
       {
          count++;
          this.x += 1;
       }
    }
}

然后你会这样称呼它

enemy.hitBack();

可能需要调整一两行,它不在我的头顶。