我尚未测试您的项目,但如果内存可用,则组件需要接收焦点以处理键盘事件。
只需添加
gamePanel.setFocus();
在
updateFrame()
功能,我认为它会起作用。
像这样:
private function updateFrame():void {
if (!initializationCompleted) {
return;
}
gamePanel.graphics.clear();
gamePanel.graphics.beginBitmapFill(screenBuffer, null, false, false);
gamePanel.graphics.drawRect(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT);
gamePanel.graphics.endFill();
if (trigger == 0) {
screenBuffer.fillRect(new Rectangle(480, 360, 200, 200), 0xFF000000);
} else if (trigger == 1) {
screenBuffer.fillRect(new Rectangle(480, 360, 200, 200), 0xFFFF0000);
} else if (trigger == 2) {
screenBuffer.fillRect(new Rectangle(480, 360, 200, 200), 0xFF0000FF);
}
gamePanel.setFocus();
}
另一种选择是添加
EventListener
对于整个应用程序(请注意,如果使用文本字段,则在文本输入期间将触发此EventListener)。
public function setup():void {
screenBuffer = new BitmapData(SCREEN_WIDTH, SCREEN_HEIGHT, false, 0x00000000);
systemManager.stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDown);
initializationCompleted = true;
}
我希望这对你有帮助。