ActionScript のタイマー処理[AIR/Flex]
(2009-01-30 10:09:22) by shinoda


AIR の開発に Flex Builder 3 を使ってるんだけど、VisualBasic みたいに Timer コンポーネントは無いのね。

一定時間毎に、グローバル変数の値をチェックして、内容が変化したら処理を行いたいのだが、そういう場合は Timer クラスを使った処理を手書きせんといかんのね。

Timer を使った一番単純な例だと、こんな感じ。

<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication
 xmlns:mx="http://www.adobe.com/2006/mxml"
 layout="absolute"
 initialize="initProc();">

 <mx:Script>
  <![CDATA[

   // タイマー処理開始
   private function initProc():void {

    // 5秒毎に延々とイベント送出を続けるタイマーインスタンス
    var timeCheck:Timer = new Timer(5000);
    // 5秒経過毎に実行されるイベントを指定
    timeCheck.addEventListener(TimerEvent.TIMER, onTick);
    // タイマースタート(イベント発生待ち)
    timeCheck.start();

   }

   // 5秒経過イベント
   public function onTick(event:TimerEvent):void {

    trace((event.target.currentCount * 5) + "秒経過");

   }

  ]]>
 </mx:Script>

</mx:WindowedApplication>

これの処理結果は、

5秒経過
10秒経過
15秒経過
20秒経過
...

のような表示が延々コンソールに出続ける。ちゃんと 5秒毎に TimerEvent.TIMER イベントが発生してるね!

「一定時間毎に、グローバル変数の値をチェック」したいのなら、onTick function のところに処理を記述する。

上の例だと無限にイベントが発生しているが、発生回数を制限したいのなら、タイマーインスタンスの生成時に、

var timeCheck:Timer = new Timer(5000, 5); // 5回まで

という具合に回数を指定してやれば良い。

簡単、簡単。


コメント投稿
次の記事へ >
< 前の記事へ
TOPへ戻る

Powered by
MT4i 3.0.8