電気ウナギ的○○

About Home

文字列が横スクロールする AIR アプリ

shinoda (2009年1月30日 23:34)

AS_test4.gif

ActionScript3 で、簡単な電子掲示板ぽい文字列横スクロールのプログラムを書いてみる。

グローバル変数を使って、Timer クラスのイベントで編集するのが簡単じゃろう。

どうしても生理的にグローバル変数が使いたくないという偏屈者は、ActionScript2 との互換性のために用意されている setInterval や setTimeout などのパブリック関数を使って引数渡しなどすることになるんだろうが、どう考えてもすっきりしたコードにはならんじゃろう。

素直にグローバル変数を使ったら、↓ほら、そこそこすっきり。

<?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 {

    // text1 の端まで文字列を1秒毎にスクロールさせ、10秒そのまま
    var timeCheck:Timer = new Timer(1000, MAX_TEXT_SIZE + 10);
    timeCheck.addEventListener(TimerEvent.TIMER, onTick);
    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;
    }

   }

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

</mx:WindowedApplication>

これで、「わたしは宇宙からきたゴリ星人だ。多分、そうだ。」という文字が右手から左手に流れていき、ラベルの一番左まできたら、そこで 10秒間停止・・・という動きをする。(文字列の先頭にスペースをセットし、その数を段々と減らしていくことでスクロールしているように見せている)

こういうのを、setInterval や setTimeout などを使って書くと、もっとごちゃごちゃになる予感。
素直にグローバル変数を使うのが吉。(そもそも、今時、グローバル変数を嫌う理由がない)

電気ウナギ的○○

About This Site

電気ウナギ的○○
岩国在住。広島で働く超零細IT企業社長のいわゆる社長日記。
何か、酒と食い物のことばかり書いているようで・・・お察しのとおり、肥満体です:-)


2011/06/24
iPhone用サイト公開

Create with jQuery, jQTouch.


CLOSE