AS3 - 键盘事件对某些键不起作用

时间:2015-10-26 17:33:46

标签: actionscript-3 keyboard addeventlistener

所以这很奇怪,我正在使用Kongregate.com在你做“Shootorials”时给你的完全相同的Key类。它适用于箭头键,但在尝试使用WASD控件时则不是很好。我无法识别keyCode,所以我开始输入trace(); keyPressed事件处理程序中的语句。

事实证明,我的箭头键和我的其他一些键如'D'和'G'将触发事件。但是其他键不起作用。 'A','S'。

为什么我班上的某些键而不是其他键?

源代码

包 {

import flash.display.Stage;
import flash.events.Event;
import flash.events.KeyboardEvent;

public class Key {

    private static var initialized:Boolean = false;
    private static var keysDown:Object = new Object();  // stores key codes of all keys pressed

    public static function initialize(stage:Stage) {
        if (!initialized) {
            // assign listeners for key presses and deactivation of the player
            stage.addEventListener(KeyboardEvent.KEY_DOWN, keyPressed);
            stage.addEventListener(KeyboardEvent.KEY_UP, keyReleased);
            stage.addEventListener(Event.DEACTIVATE, clearKeys);
            // mark initialization as true so redundant
            // calls do not reassign the event handlers
            initialized = true;
            trace("Initialized [Keys]");
        }
    }


    public static function isDown(keyCode:uint):Boolean 
    {
        return Boolean(keyCode in keysDown);
    }


    private static function keyPressed(event:KeyboardEvent):void {
        trace("Keyboard Event Trigger");
        keysDown[event.keyCode] = true;
    }


    private static function keyReleased(event:KeyboardEvent):void {
        if (event.keyCode in keysDown) {
            delete keysDown[event.keyCode];
        }
    }


    private static function clearKeys(event:Event):void {
        // clear all keys in keysDown since the player cannot detect keys being pressed or released when not focused
        keysDown = new Object();
    }
}

}

2 个答案:

答案 0 :(得分:0)

曾经有过同样的问题。我被绑在我正在运行的浏览器上。有些浏览器似乎劫持了一些键盘事件,并且不让它们冒泡到flash播放器。

在其他浏览器中检查相同的问题可能会为您提供一个解决问题的入口点。

答案 1 :(得分:0)

Akos说检查浏览器是否在劫持键盘事件。经过调查,我了解到我的闪存播放器本身正在劫持我的钥匙。这就是我修复它的方法。

  1. 在您想要的任何Flash播放器中运行.swf。
  2. 点击窗口菜单中的“控制”
  3. 选中“禁用键盘快捷键”
  4. 轻松修复。谢谢你的帮助。