« PV3D & Box2D & Maze の作り方 | メイン | JavaScript で ByteArray »

2008年2月18日

[as2] MovieClipLoaderのイベント

以前書いた「画像をロードしたMC 上に attachMovie」という記事に
助言をいただきまして、ちょっと試してみたので掲載しておきます。

読み込み先の"sub.swf"には「imageMC」というムービークリップが配置されてます。
var mc:MovieClip = this.createEmptyMovieClip("loadSWF",10);
var loader:MovieClipLoader = new MovieClipLoader();
listener = { onLoadComplete:function(){
    trace(mc.imageMC);                      // output 1
    mc.onEnterFrame=function(){
      trace("onEnterFrame : "+mc.imageMC);  // output 2
      delete this.onEnterFrame;
    }}, 
    onLoadInit:function(){
      trace("onLoadInit : "+mc.imageMC);    // output 3
    }};
loader.addListener( listener );
loader.loadClip( "sub.swf" , mc );
出力結果
undefined
onEnterFrame : _level0.loadSWF.imageMC
_level0.loadSWF
onLoadInit : _level0.loadSWF.imageMC
出力結果の1行目は "output 1" 、2行目は "output 2"、
3行目は sub.swf のルート1フレーム目に書かれた「 trace(this); 」の出力、
4行目が "output 3"になります。

僕は今まで onLoadInit が読み込みを開始したときのイベントだと勝手に勘違いしてました。
実際にはonLoadInitは読み込まれたswfの1フレーム目のスクリプトが実行された後に呼び出されるみたいです。
onEnterFrameは各フレームのスクリプトの一番最初に実行されるルールがここでも有効みたいなので、onLoadInitが呼び出される前(読み込まれたswfのスクリプトが実行されるよりも前)に実行されるみたいです。

それぞれ実行されるタイミングが違うので、意図的にこれらを使い分ければ便利かもしれないです。

トラックバック(0)

このブログ記事を参照しているブログ一覧: MovieClipLoaderのイベント

このブログ記事に対するトラックバックURL: http://system.seyself.com/mt-tb.cgi/481

コメントする


画像の中に見える文字を入力してください。

しばらく時間が経過すると、システム内部と表示されている文字内容に食い違いが発生するようなので、
投稿する前にページをリロードすることをお勧めします。
リロードしてもフォームの内容は維持されます。