続・ImagePreloaderクラスを作ってみた

前回のエントリ”ImagePreloaderクラスを作ってみた“で、MovieClipLoaderに渡すイベント受信用のオブジェクトにどうやって変数や関数を渡すかで悩んでたけど解決したのでメモ。

MovieClipLoaderからイベントを受信するために、各イベントのコールバック用の関数を定義したオブジェクトを作ってそれをaddListenerで渡さないといけないかと思ってたんだけど根本的に間違ってた。

class example
{
   public function example(img:String)
   {
      mc = _root.createEmptyMovieClip(“mc”, 1000);
      var mcl:MovieClipLoader = new MovieClipLoader();

      /*
      ここでMovieClipLoaderに自分を登録して、
      イベントを受信できるようにする。
      */
      mcl.addListener(this);
      mcl.loadClip(img, mc);
   }

   private function onLoadStart():Void
   {
      //ロードが開始されたらここが実行される。
   };

   private function onLoadProgress ():Void
   {
       //ロード中ここが実行される。
   };

   private function onLoadInit ():Void
   {
       //ロードが完了したらここが実行される。
   };
}

これでわざわざスコープの違うオブジェクトにデータを受け渡す必要はなくなってスマートになった。

てかクラス内でオブジェクト作ってその中に直接データねじ込んでやり取りってどう考えてもアホの所業だもんな。一つ関門突破した。

ようやくOOPの世界に一歩踏み込めた気がする。