ちとヘビーにハマったのでメモ。
createEmptyMovieClipで空のムービーを作って、そこに画像データをロードした。
で、mxパッケージのTransitionManagerクラスでトランジッションさせようとしたところ、それが全然きかない。見事にパッと表示される。
この手の外部データ読み込みでありがちなのが読み込みタイミングの問題で、つまりは読み込みが完了していないデータに何らかの処理をしようとしても当然エラーになるというやつ。まあ初歩的なミスだ。
でもこの時はMovieClipLoaderクラスを使っていて、読み込み完了のイベントが発生してからトランジッションをかけていたのでそれはない。
でもって半日ウダウダしてやっと原因が判った。
FlashってどうもcreateEmptyMovieClipで作成したMovieClipに読み込まれたデータの幅や高さが取得できないくさい。
試しに新規ファイルを開き、
//テスト
this.createEmptyMovieClip(”test_mc”, this.getNextHighestDepth());
test_mc.loadMovie(”hoge.jpg”);
trace(test_mc._width+”, “+test_mc._height);
としたあと、適当なファイル名で保存。同じディレクトリに「hoge.jpg」という名前でjpgファイルを作成。
パブリッシュプレビューすると結果は「0, 0」。
という事はサイズ0のオブジェクトに対してTransition効果をかけようとしていたワケだ。
仕方がないからcreateEmptyMovieClipしたMovieClip内(この場合test_mc)に
test_mc.lineTo(500, 300);
なんつって画像の大きさに合わせて対角線を一本引いてしのいだ。
我ながらダッセーとか思うが、他になんかいい方法あるんでしょうか……。
追記(2006/2/22)
コメント欄にてご指摘いただきまして、本エントリーがガセであることが判明いたしました。多謝。
やはり読み込み判定のタイミングの問題だった模様。
>読み込み完了のイベントが発生してからトランジッションをかけていたのでそれはない。
なにが「それはない」か(笑)。