我正在尝试创建一个击败em的游戏,现在我让我的角色进行攻击。到目前为止,我已经制作了3个攻击动画,效果差不多。如果你一直压住攻击按钮,它就会攻击,但问题是,只要攻击按钮一按下,它就会转到下一个攻击动画,我不想这样。当当前的攻击动画结束后,我如何让它转到下一个攻击动画,而不是跳到当前动画中途的下一帧。所以我希望角色完成它的攻击,如果玩家仍然输入攻击键,它将转到下一个攻击帧。
package
{
import flash.display.MovieClip;
import flash.events.Event;
import flash.events.KeyboardEvent;
import flash.ui.Keyboard;
public class Player extends MovieClip
{
//Attack variables
var Attacking:Boolean = false;
var Punches:int = 0;
var Punching:Boolean = false;
var Kicks:int = 0;
var Kicking:Boolean = false;
public function Player()
{
stage.addEventListener(KeyboardEvent.KEY_DOWN,KeyPressed);
addEventListener(Event.ENTER_FRAME,Update);
}
function KeyPressed(event:KeyboardEvent):void
{
stage.removeEventListener(KeyboardEvent.KEY_DOWN, KeyPressed);
stage.addEventListener(KeyboardEvent.KEY_UP, KeyUp);
//If A key is down
if (event.keyCode == 65)
{
Attacking = true;
Punching = true;
Punches++;
}
}
function Update(event:Event)
{
//If player is not attacking
if (Attacking == false)
{
Punching = false;
Punches = 0;
Kicking = false;
Kicks = 0;
}
else if (Attacking == true)
{
if (Punching == true)
{
gotoAndStop('Jab' + Punches);
}
}
}
function KeyUp(event:KeyboardEvent)
{
stage.addEventListener(KeyboardEvent.KEY_DOWN, KeyPressed);
}
}
}同样在我写下的每个攻击动画的最后一帧中
import flash.display.MovieClip;
import flash.events.Event;
stop();
MovieClip(parent).Attacking = false;
MovieClip(parent).Punches = 0;发布于 2013-08-04 08:29:54
首先,您应该删除在KeyPressed和KeyUp方法中添加和删除的事件侦听器(它们不是必需的,它们只会导致问题),并在构造器中注册key up事件,就像其他两个方法一样。
其次,要实现这一点,您需要检查按键是否按下,而不是监听按键。为此,您需要一个名为holdingAttackKey的新字段。
var holdingAttackKey:Boolean = false;
function KeyPressed(event:KeyboardEvent):void {
if (event.keyCode == 65)
{
holdingAttackKey = true;
Attacking = true;
Punching = true;
//...
function KeyUp(event:KeyboardEvent)
{
holdingAttackKey = false;
}
function Update(event:Event)
{
if(holdingAttackKey && Attacking==false) {
Attacking = true;
Punching = true;
Punches++;
}
//....https://stackoverflow.com/questions/18038327
复制相似问题