Actionscript 3 如何使我的键盘命令使播放器通过动画播放?

Actionscript 3 如何使我的键盘命令使播放器通过动画播放?,actionscript-3,flash,animation,keyboard-events,Actionscript 3,Flash,Animation,Keyboard Events,我的键盘命令有问题,我试图让我的播放器播放动画 当他向左/向右走的时候。 键盘为播放器发出移动和播放动画的命令。 问题是,他总是没完没了地启动动画,却不让它结束 stage.addEventListenerKeyboardEvent.向下键,按下键; stage.addEventListenerKeyboardEvent.向上键,释放键 function keyRelease(k:KeyboardEvent) { movement = 0; gotoAndPlay("standi

我的键盘命令有问题,我试图让我的播放器播放动画 当他向左/向右走的时候。 键盘为播放器发出移动和播放动画的命令。 问题是,他总是没完没了地启动动画,却不让它结束

stage.addEventListenerKeyboardEvent.向下键,按下键; stage.addEventListenerKeyboardEvent.向上键,释放键

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");     
    }
}
我想我可以通读所有的代码,列出一长串的如果


但我认为,在向键盘添加事件时,必须有更好的方法,一旦按下某个键,如果不释放,KeyboardEvent.key_DOWN会不断发送。可能发生的情况是不断调用gotoAndPlaywalking,因此总是重新启动动画

您需要一种方法来检查动画的状态,并避免在已经播放的情况下重新启动序列。比如:

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");     
    }
}

这并不是我推荐的根据当前移动速度计算动画状态的方法,但这是一个简单的解决方案,应该可以解决这个问题。

哦,谢谢!!!当我收到你的回复时,我做了一些与你描述的更接近的事情,但是我用定时器做的,这在a**中造成了大量的痛苦!你的方式似乎更好,我会马上检查,但有没有办法让键盘按键只发送一行代码?我已经想象过如果我没有这种选择,未来会有很多问题……不是真的。键盘事件试图模拟键盘键的工作方式——如果你按一次,它将发送一个键,等待几毫秒,然后开始不断发送该键。这是意料之中的事。避免这种情况的最好方法是设置按键的状态,例如isMovingLeft、isMovingRight,按下/释放键只会在状态不同时更改状态。可能会有点尴尬,但效果很好。顺便说一句,某些第三方游戏/按键输入类也让你更容易抽象,你只需检查是否显示了某些内容,而不必听向下/向上的事件。或者,您可以构建自己的类来隐藏重复向下/向上功能,方法是在发送事件之前不断检查密钥的状态。嗯。。。有什么渠道可以让我更好地了解这一点吗?我可能会尝试一些事情来解决它,但我无法逃避计时器的使用。。。我的意思是,如果我说ifkeydown{isPressed},那么他将在每一帧发送相同的函数,再次感谢你的帮助!我不知道你用它干什么,但我绝对不会用定时器。除非它们是用于长期1秒以上的东西,否则它们实际上是不精确的,是一个资源消耗者。你是对的,如果按IsKeyPressed播放移动动画有什么问题,它会强制检查状态,这样就不会再次启动动画。您可能需要一些布尔变量,例如isWalkingLeft。但在其他情况下,它仍然有帮助。本教程似乎很好地介绍了如何在游戏中使用键盘状态: