2013-12-10 62 views
0

我會如何去關閉一個角色控制5秒後他們擊中一個對象,然後立即讓角色自由移動?到目前爲止,我已經能夠獲得完成hitTest的代碼以及刪除鍵盤控件(簡單部分),但是現在我很難理解如何在計時器上設置鍵盤控件。任何幫助?我的hitTest代碼和刪除控件如下。有沒有什麼辦法可以根據計時器來刪除和添加監聽器?

if (player.hitTestObject(folder)) 
{ 
    trace("success!"); 
    addChild(myInfo); 
    //stops player movement 
    stage.removeEventListener(KeyboardEvent.KEY_DOWN,kD); 
} 
else 
{ 
    addChild(myInfo); 
    removeChild(myInfo); 
} 

在代碼中的其他問題是不關心的,現在(如添加/刪除孩子在其他功能。

回答

3
private var m_tmr:Timer = new Timer(5000, 1); 

private function someFunc():void 
{ 
    if (player.hitTestObject(folder)) 
    { 
     trace("success!"); 
     addChild(myInfo); 
     //stops player movement 
     stage.removeEventListener(KeyboardEvent.KEY_DOWN,kD); 
     m_tmr.addEventListener(TimerEvent.TIMER, onTimer); 
     m_tmr.start(); 
    } 
    else 
    { 
     addChild(myInfo); 
     removeChild(myInfo); 
    } 
} 

private function onTimer(pEvent:TimerEvent):void 
{ 
    m_tmr.removeEventListener(TimerEvent.TIMER, onTimer); 
    stage.addEventListener(KeyboardEvent.KEY_DOWN, kD); 
} 

添加/刪除計時器的事件監聽器每次是目的是提高效率;不要緊,你不斷增加/刪除它像這樣

+0

唯一的問題,我與你的解決方案是它迫使我按住一個運動的關鍵之前,它允許再次移動;任何想法如何解決這個問題?如果不是這樣,謝謝!你仍然是一個救生員!:b –

+0

請您詳細說明一下嗎? – Panzercrisis

+0

嗯,我的角色擊中了對象,然後停止移動,但只有持續移動,如果我按住一個鍵5秒鐘,而不是在5秒後移動一般。我也應該注意到,這是通過框架腳本而不是類來完成的(我知道這個主意不好)。 –

相關問題