我的AS3代码中有一个“暂停功能”,问题是我无法找到必要的逻辑来给字母“P”提供暂停和取消暂停的能力,同时限制按下次数一次一个。到目前为止我的代码(工作,是的,但没有“一次按一次”限制)。
public function PauseDown(event:KeyboardEvent):void
{
if (event.keyCode == Keyboard.P)
{
pause = true;
trace ("apreté pausa");
pausa();
}
}
public function pausa():void
{
trace ("pausa");
if (pause == true && paused == false)
{
paused = true;
backgroundLvL1.removeEventListener(Event.ENTER_FRAME,update);
}
else if(pause == true && paused == true)
{
paused = false;
backgroundLvL1.addEventListener(Event.ENTER_FRAME,update);
}
}
答案 0 :(得分:0)
你的'PauseDown'函数应该被称为其他函数,因为只要按下任何键就会调用它;像'keyPressed'这样的东西可能更具描述性。
如果您只想确认一个键是最近按下的键,我会将一个变量(例如_currentKeyCode)设置为'keyPressed'函数中的event.keyCode。然后,在您的游戏循环功能中,您可以检查_currentKeyCode的值并让游戏做出相应的响应。
在'keyPressed'功能中,您还可以包含测试以查看是否已按下'P' 请注意,您还应该在KeyBoardEvent.KEY_UP事件上触发'keyReleased'函数。这可以检查_currentKeyCode == event.keyCode,如果是,则将_currentKeyCode设置为-1。然后,在你的游戏循环中,-1表示没有按键。
最后一点,无关紧要的事情:在'pausa'函数中你不需要检查'pause == true',因为pausa函数只在pause == true时被调用。