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 に答える