AS3でn秒後に1度だけ実行

iyamaです。

今日は、ActionScriptで私が時々使ってる便利クラスを紹介します。 Timerを便利に使うクラスです。

紹介するのは以下のサイトのクラスです。 『 一定時間後に関数を一度だけ実行するDelayExecutorクラス 』

必ず使うと便利!ってわけじゃないんですけど、 1回だけn秒後にイベントを発生させたい場合とかはとにかく便利。 DelayExecutorを使わない場合はこんな感じ。

通常

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import flash.events.TimerEvent;
import flash.utils.Timer;

// n秒後に1回実行
var timer:Timer = new Timer(n * 1000, 1);
timer.addEventListener(TimerEvent.TIMER_COMPLETE, onTimerComplete);
timer.start();

/**
 * onTimerComplete
 * @param event
 */
private function onTimerComplete(event:TimerEvent):void {
    // n秒後に実行させたい処理
    timer.removeEventListener(TimerEvent.TIMER_COMPLETE, onTimerComplete);
}

DelayExecutor

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import DelayExecutor;
import flash.events.TimerEvent;
import flash.utils.Timer;

// n秒後に1回実行
DelayExecutor.register(onTimerFunc, n * 1000).start();

/**
 * onTimerFunc
 * @param exe
 */
private function onTimerFunc(exe:DelayExecutor):void {
    // n秒後に実行させたい処理
}

ちょっとスマートでしょ。 忘れがちなremoveEventListnerをしなくてもいいってこともよいのです。

以上です。

Comments