我在 flex 中做了一个简单的游戏。你控制落下的方块,你的目标是消灭病毒。这几乎是 90 年代游戏《马里奥博士》的翻版。我已经做到了,所以你可以用箭头键控制方块,然后用空格旋转方块。播放时一切正常。但是,当我切换到另一个程序并且应用程序失焦并且我回到游戏时,每当我按空格键时,游戏都会重新启动。这就像它调用了一个重新初始化游戏并将所有变量重置为起始值的函数。该游戏由几个类似于场景的 NavigationContent 组件组成。按空格键时游戏不会回到开始屏幕,它只是重置游戏。威奇真的很奇怪。是否有任何被调用的默认方法会导致这种行为?有人有线索吗?
编辑:问题出现 - 看起来 - 只有当我将功能绑定到空格键(keyCode 32)时。我通过将键重新绑定到“CTRL”解决了这个问题。但是仍然很高兴知道 SPACE 键发生了什么。如果我使用 Internet Explorer,该游戏在空间上运行良好。其他浏览器不能使用空格键。所有这些都是同样的问题。
编辑:这是事件侦听器的外观:
this.stage.addEventListener(KeyboardEvent.KEY_DOWN, moveBlocksKeyboardEvent);
即使我注释掉 moveBlocksKeyboardEvent 方法中的所有代码,游戏仍然会重新启动。仅在按空格键时。如果我按住键,块会旋转。当我松开空格键时,游戏重新开始。好像它是一些与 KEY_UP 事件或其他东西相关的重新初始化方法。