0

所以,例如,如果你这样做了stage.addEventListener(MouseEvent.CLICK, onClick);——你怎么能设置一个......比如说5秒的冷却时间,所以你必须等待5秒才能让你再次点击?或者至少运行 onClick 函数。

4

2 回答 2

2

选项1 :

stage.addEventListener(MouseEvent.CLICK, onClick);

private function onClick(e:MouseEvent):void
{
    stage.removeEventListener(MouseEvent.CLICK, onClick);
    setTimeout(function() { 
        stage.addEventListener(MouseEvent.CLICK, onClick);
    }, 5000);
} 

选项#2:

stage.addEventListener(MouseEvent.CLICK, onClick);
var then:int = 0;
private function onClick(e:MouseEvent):void
{   
    var now:int = getTimer();
    if(now - then > 5000) {
       // do your thing
       then = now;
    }
} 

选项#3:

stage.addEventListener(MouseEvent.CLICK, onClick);
var timer:Timer = new Timer(5000, 1);
timer.addEventListener(TimerEvent.TIMER_COMPLETE, onComplete);
private function onClick(e:MouseEvent):void
{   
   stage.removeEventListener(MouseEvent.CLICK, onClick);
   timer.start();  
} 

private function onComplete(e:TimerEvent):void
{ 
    stage.addEventListener(MouseEvent.CLICK, onClick);
    timer.reset();
}
于 2013-07-27T04:45:25.003 回答
0

我处理这个问题的方法是创建一个全局 TouchManager。在实践中我讨厌全局对象,但在某些情况下,它们很好地解决了问题。在这种情况下,全局是有意义的,因为出于我的目的,我希望禁用来自所有可能来源的所有触摸输入。

在我的 TouchManager 中,有一个静态函数,它允许任何调用者在计时器上暂停可触摸性,等等。在我的实现中,我会以 5 秒的超时时间调用此函数。然后,任何处理触摸输入的事件处理程序都将咨询 TouchManager 并在触摸处理当前暂停时提前退出处理程序。

提示“如果某事被称为经理,那么你做错了”人群。

于 2013-07-27T21:06:57.240 回答