跳至AS3中的下一个游戏关卡

时间:2011-02-10 06:59:26

标签: actionscript-3 event-handling

我正在建立一个大约20个级别的游戏。现在,我正在考虑尝试使用空格键添加“跳过”选项。我有点麻烦,因为按住空格键会多次调用 KeyboardEvent.KEY_DOWN 事件。

当我尝试在屏幕上移动我的播放器角色时,上面的场景(Keydown和keyup)工作得很好。 在我脑海中挥之不去的一个主要问题是“这是否会出错,因为 KeyboardEvent 侦听器在更改级别时会被删除并添加?”

P.S:将跳过选项添加为按钮可以正常工作,但我真的很想使用空格键以方便使用。

3 个答案:

答案 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侦听器。