AS3。如何在动画过程中逐步推动敌人?
Posted
技术标签:
【中文标题】AS3。如何在动画过程中逐步推动敌人?【英文标题】:AS3. How to push enemy step by step while during animation? 【发布时间】:2014-02-17 13:42:03 【问题描述】:我正在创建 Flash 游戏。这是主要玩家英雄和敌人。这是一个完全动画的游戏,但我有一个问题,当英雄在攻击动画期间它应该逐步将敌人推回约 100 px。 现在我得到了:
点击“x”键开始攻击动画,直接将敌人的x坐标设置为+/-100像素。
这里大约有 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
【问题讨论】:
【参考方案1】:你应该给你的敌人设置一个速度,让它在每一帧都以这个速度 * frameLength 移动。
【讨论】:
谢谢你的回答,能给我一个代码示例吗?非常感谢。【参考方案2】:在你的敌人类中有一个 hitBack() 函数,它向你的电影剪辑添加一个 Event.ENTER_FRAME 侦听器并将计数器设置为 0。在 enterframe 函数中,使这个敌人的 x 位置增加 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();
可能需要调整一两行,这超出了我的考虑范围。
【讨论】:
谢谢你的回答,你能给我举个例子吗?以上是关于AS3。如何在动画过程中逐步推动敌人?的主要内容,如果未能解决你的问题,请参考以下文章