続・文字列が横スクロールする AIR アプリ[AIR/Flex]
(2009-02-10 14:46:18) by shinoda


<画像:AS_test4_2.gif>

この間書いた「文字列が横スクロールする AIR アプリ」の続き。

この間は、右から現れた文字列が左端までスクロールしてくるところまで作った。今回は、Label の左端までスクロールして一旦停止後、今度はそのまま左側にスクロールしながら消えていく動きを追加。

左端までスクロールさせる timer イベントが終了した時に実行される timerComplete イベントで「その後、文字が更に左にスクロールして消えていく」処理を呼び出します。

「その後、文字が更に左にスクロールして消えていく」処理の中では、また別の timer イベントを発生させ、文字列が空になるまで処理繰り返します。
文字列が空になるまで処理を繰り返すのは、「左スクロール」の動きを、文字列の一文字目の文字を削除しては表示を繰り返すことで実現しているからじゃね。


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

 <mx:Script>
  <![CDATA[

   // グローバル変数
   public var TextData:String = "わたしは宇宙からきたゴリ星人だ。多分、そうだ。"; // 表示文字列
   // 定数
   public static const MAX_TEXT_SIZE:int = 40; // text1 に表示できる最大文字数

   private function initProc():void {

    var timeCheck:Timer = new Timer(100, MAX_TEXT_SIZE + 10);
    timeCheck.addEventListener(TimerEvent.TIMER, onTick);
    timeCheck.addEventListener(TimerEvent.TIMER_COMPLETE, onTimerComplete);  // 左端まで移動した後の処理
    timeCheck.start();

   }

   // ラベルにセットする文字列の編集
   private function onTick(event:TimerEvent):void {

    // 時間が経過する毎に、表示文字列の前に挿入する全角スペースの数を減らしていく
    var blankCnt:int = MAX_TEXT_SIZE - event.target.currentCount;
    
    if (blankCnt <= 0) {
     label1.text = TextData;
    }
    else {
     label1.text = (new Array(blankCnt).join(" ")) + TextData;
    }

   }

   private function onTimerComplete(event:TimerEvent):void {

    // 文字列の文字数分だけ処理を行う
    var timeCheck2:Timer = new Timer(100, TextData.length);
    timeCheck2.addEventListener(TimerEvent.TIMER, onTick2);
    timeCheck2.start();

   }

   // ラベルにセットする文字列の編集
   private function onTick2(event:TimerEvent):void {

    // 時間が経過する毎に、表示文字列の一番前の文字を削除
    TextData = TextData.substr(2);
    // ラベルにセット
    label1.text = TextData;

   }

  ]]>
 </mx:Script>
 <mx:Label x="41" y="24" text="この下に文字が流れながら表示されます"/>
 <mx:Label x="41" y="50" width="279" id="label1"/>

</mx:WindowedApplication>


こんな感じ。


コメント(2)
次の記事へ >
< 前の記事へ
TOPへ戻る

Powered by
MT4i 3.0.8