我正在建立一个大约20个级别的游戏。现在,我正在考虑尝试使用空格键添加“跳过”选项。我有点麻烦,因为按住空格键会多次调用 KeyboardEvent.KEY_DOWN 事件。
当我尝试在屏幕上移动我的播放器角色时,上面的场景(Keydown和keyup)工作得很好。 在我脑海中挥之不去的一个主要问题是“这是否会出错,因为 KeyboardEvent 侦听器在更改级别时会被删除并添加?”
P.S:将跳过选项添加为按钮可以正常工作,但我真的很想使用空格键以方便使用。
答案 0 :(得分:4)
同样监听KeyboardEvent.KEY_UP
,并保留一个充当开关的布尔值。如果按下键盘并且布尔值为false,则将布尔值设置为true并继续。然后,当调用key_up事件回调时,将布尔值重置为false。
答案 1 :(得分:1)
这样的事情对你有用吗?
private function levelInit () : {
// ...
stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownListener);
// ...
}
private function keyDownListener (e : KeyboardEvent) : void {
if (e.keyCode == Keyboard.SPACE) {
stage.removeEventListener(KeyboardEvent.KEY_DOWN, keyDownListener);
// add stuff to initiate the level skip
}
}
你也可以从stage.addEventListener
调用setTimeout
来延迟添加监听器以保护更多内容。
答案 2 :(得分:1)
删除函数中的key_down侦听器并添加key_up侦听器。然后在key_up函数中删除该侦听器并添加回key_down侦听器。