Actionscript 3 当我快速切换按键时,为什么我刚才按下的按键会触发按键启动事件?

Actionscript 3 当我快速切换按键时,为什么我刚才按下的按键会触发按键启动事件?,actionscript-3,flash,events,keyboard,keyboard-events,Actionscript 3,Flash,Events,Keyboard,Keyboard Events,我正试图得到一个标准的键盘控制的游戏使用空气接受我的按键。这个游戏要求能够朝一个方向跑,并快速转身朝另一个方向跑;但是,当我连续快速地从“A”键切换到“D”键时,我的角色会在原地停留片刻,然后继续,就好像我在“ON_KEY_DOWN”事件中移动我的角色一样。我了解如何使用ENTER_FRAME使用布尔值移动角色,我也看过其他人的教程(我注意到他们的教程中也有这个问题) 这是Player.as类的一个片段: private function OnEnterFrame( e:Event = null

我正试图得到一个标准的键盘控制的游戏使用空气接受我的按键。这个游戏要求能够朝一个方向跑,并快速转身朝另一个方向跑;但是,当我连续快速地从“A”键切换到“D”键时,我的角色会在原地停留片刻,然后继续,就好像我在“ON_KEY_DOWN”事件中移动我的角色一样。我了解如何使用ENTER_FRAME使用布尔值移动角色,我也看过其他人的教程(我注意到他们的教程中也有这个问题)

这是Player.as类的一个片段:

private function OnEnterFrame( e:Event = null ):void
{
    if ( Input.kd("W") )
    {
        this.y -= runSpeed;
        SetAnimation( RUNUP );
    }
    else if ( Input.kd("S") )
    {
        this.y += runSpeed;
        SetAnimation( RUNDOWN );
    }
    else if ( Input.kd("A" ) )
    {
        this.x -= runSpeed;
        SetAnimation( RUNLEFT );
    }
    else if ( Input.kd("D") )
    {
        this.x += runSpeed;
        SetAnimation( RUNRIGHT );
    }
    else
        SetAnimation( IDLE );
}
这是输入类的一个片段(从Matthew Bush那里借来的,试图研究这个奇怪的问题)

以下是输出:

Key Down: 68 //Holding D
Key Down: 65 //Let go of D and pressed A
Key Up: 68 //D KeyUp fires
Key Up: 65 //A KeyUp fires, but I only just pressed A and didn't let it go

现在,需要进一步澄清的场景是:假设我按住D使角色向右运行,此时一切正常;我迅速放开D,按A向另一个方向转弯,这就是问题发生的地方。在handleKeyUp上跟踪时,它说D和A同时被释放,即使我刚刚按下了A,但它从未被释放。这将从我的保留键字典中删除D和A,使玩家暂停片刻,然后一旦handleKeyDown启动,他就开始朝正确的方向运行。我能做些什么?如果您需要进一步的说明或更多的代码,请告诉我。

我发现了我的实际问题所在。下班回家后,我的游戏在我当前的代码下运行得非常好,今天回来工作时,我的游戏运行得不好。结果发现问题出在我的键盘上;我使用的是一个旧键盘,带有连接到USB转换器的Ps/2电缆。当我用USB键盘替换键盘时,没有问题。我仍然计划在我的PS/2电缆键盘上找到解决这个问题的方法,因为我不想忽视这样的问题。

当你解决你自己的问题时,你应该考虑在你自己的问题的答案中描述这个解决方案。对不起,我找了一个方法来回答它。但是找不到回答我自己问题的按钮。
Key Down: 68 //Holding D
Key Down: 65 //Let go of D and pressed A
Key Up: 68 //D KeyUp fires
Key Up: 65 //A KeyUp fires, but I only just pressed A and didn't let it go