2012-08-19 112 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; 
    } 
}