Flash可以检测多少个按键?使用as3

Ric*_*rdo 5 keyboard flash events actionscript-3

我正在开发一款小游戏.我使用以下代码来检测播放器按下的键:

private function onKeyDown(event:KeyboardEvent):void {
        //moviment keys
        if (event.keyCode == 37 || event.keyCode == 65) {
            this.leftKeyPressed = true;
        }
        if (event.keyCode == 39 || event.keyCode == 68) {
            this.rightKeyPressed = true;
        }
        if (event.keyCode == 38 || event.keyCode == 87) {
            this.upKeyPressed = true;
        }
        if (event.keyCode == 40 || event.keyCode == 83) {
            this.downKeyPressed = true;
        }

        if (event.keyCode == this.shootKey) {
            this.shootKeyPressed = true;
        }
    }
Run Code Online (Sandbox Code Playgroud)

onKeyUp事件:

private function onKeyUp(event:KeyboardEvent):void {
        if (event.keyCode == 37 || event.keyCode == 65) {
            this.leftKeyPressed = false;
        }
        if (event.keyCode == 39 || event.keyCode == 68) {
            this.rightKeyPressed = false;
        }
        if (event.keyCode == 38 || event.keyCode == 87) {
            this.upKeyPressed = false;
        }
        if (event.keyCode == 40 || event.keyCode == 83) {
            this.downKeyPressed = false;
        }
        if (event.keyCode == this.shootKey) {
            this.shootKeyPressed = false;
        }
        if (event.keyCode == changeColorKey) {
            trace('color key released');
            trace(getTimer());
            this.changeColorKeyPressed = true;
        }

    }
Run Code Online (Sandbox Code Playgroud)

基本上,几乎所有时间都会由玩家按住shootKey.并且会经常按下changeColorKey但不会按下.在测试时我注意到持有shootKey和右箭头,changeColorKey的onKeyUp事件不会被触发.按住向上或向下箭头键而不是向右箭头具有相同的效果.如果我按住左箭头键,事件就会被触发.它为什么会出现?我的代码有问题吗?

Lop*_*Sae 4

您看到的问题与您的代码无关,而是与您的键盘有关。根据键盘技术的不同,您可以同时按下的按键数量和组合也会有所不同。几年前我做了一个与你的代码非常相似的代码,我记得有你提到的同样的问题,而我当前的键盘不再发生这种情况(似乎这可以支持最多五个同时出现的字母,而旧的键盘支持三个) 。