我的键盘命令有问题,我试图让我的播放器播放动画 当他左/右走时。 键盘为玩家提供移动和播放动画的命令。 问题是他不停地开始动画,并没有让它完成。
stage.addEventListener(KeyboardEvent.KEY_DOWN,的keyPressed); stage.addEventListener(KeyboardEvent.KEY_UP,keyRelease);
function keyRelease(k:KeyboardEvent)
{
movement = 0;
gotoAndPlay("standing");
}
function keyPressed(k:KeyboardEvent)
{
if(k.keyCode==Keyboard.D)
{
movement = 5;
gotoAndPlay("walking");
}
if(k.keyCode==Keyboard.A)
{
movement = -5;
gotoAndPlay("walking");
}
}
我想我可以浏览所有代码并制作一些长的IF列表......
但我想必须有一个更好的方法
答案 0 :(得分:0)
当您向键盘添加事件时,一旦按下某个键,如果未释放KeyboardEvent.KEY_DOWN
,则会不断调度它。可能发生的是gotoAndPlay("walking")
被不断调用,因此总是重新启动动画。
您需要一种方法来检查动画的状态,并避免重新启动序列(如果已经播放)。类似的东西:
function keyRelease(k:KeyboardEvent)
{
movement = 0;
gotoAndPlay("standing");
}
function keyPressed(k:KeyboardEvent)
{
if(k.keyCode==Keyboard.D && movement != 5)
{
movement = 5;
gotoAndPlay("walking");
}
if(k.keyCode==Keyboard.A && movement != -5)
{
movement = -5;
gotoAndPlay("walking");
}
}
这不是完全我推荐它的方式(从当前的移动速度中找出动画状态),但它是一个简单的解决方案,应该适用于这个问题。