2012-08-19 103 views
2

我有一個函數在我的「enterFrameHandler *功能,它的結構是這樣的:AS3 - 如何停止功能?

private function addBoss():void{ 
    if(kills >= 3){ 
    trace("boss time"); 
    } 
} 

由於‘addBoss’是我ENTER_FRAME事件偵聽器功能的一部分,‘老大時間’儘快無限追蹤殺死達到3.我想這個功能儘快停止,因爲它激活1次。

是否有其他事件偵聽器,我可以使用,將檢查的功能,但隨後即停止,因爲它熄滅?

任何意見,將不勝感激。謝謝!

+2

最好在你的腳本中添加殺死而不是每幀檢查一次的腳本部分處理。 – 2012-08-19 19:51:31

+0

對於ENTER_FRAME事件,您可以有多個偵聽器/處理程序。爲你的addBoss使用單獨的一個,然後當你的條件滿足時,將其作爲答案中的一個進行刪除。這比想要保持檢查每一幀的答案更有效率,如果它是老闆時間 – BadFeelingAboutThis 2012-08-19 22:40:32

回答

6
private function addBoss():void{ 
    if(kills >= 3){ 
     trace("boss time"); 
     removeBossEnterFrame(); 
    } 
} 
private function removeBossEnterFrame():void{ 
    removeEventListener(Event.ENTER_FRAME, addBoss); 
} 

我的概率刪除enterFrame事件聽者中,多數民衆贊成在調用addBoss功能,一旦你描繪出「老大時間」。

+0

'addBoss()'是他的輸入框架函數的一部分,它並不是唯一正在運行的東西,正如他提到的那樣。 – xLite 2012-08-19 19:10:41

+0

讓多個eventlistener偵聽同一個事件是完全合法的,所以代碼可以在兩個方法之間分割。 – 2012-08-19 20:00:54

+0

@xLite ahh woops。是的,同意Will Kru,否則xLite的回答很好,我猜也是。就我個人而言,我喜歡爲每個事情保留不同的函數(addBoss()是一件事情),所以它更容易清理監聽器並跟蹤正在運行的事情。一天結束它到OP和任何似乎更容易/更熟悉,我想。 – 2012-08-19 20:48:57

3

這應該這樣做。

private var isBossTime:Boolean = false; 

private function addBoss():void 
{ 
    if(kills >= 3 && isBossTime == false) 
    { 
     trace("boss time"); 

     isBossTime = true; 
    } 
}