Shut the fuck up and write some code

グダグダ言わずにコードを書きたいブログ

AVM2にAVM1のファイルを読み込む 解決編

AS3のSWFにFlashLite書き出しのSWFを読み込みたくていろいろやってます。
http://d.hatena.ne.jp/verytired/20091125/1259169150
続きです。


http://www.libspark.org/wiki/fladdict/AVM2Loader
こっちを使うとCCOMPLETEイベントも帰ってきてちゃんと使える。これで行ける!と思ったものの
mcとトレースしてみるとnullになっている。mcに格納出来ない模様。

     public class Main extends Sprite {
        
        private var _mc:MovieClip;
        private var _url:URLRequest;
        private var _loader:AVM2Loader;
        
        public function Main() {
            var path:String = "test.swf"
            _loader = new AVM2Loader();
            _url = new URLRequest(path);
            _loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadComplete);
            _loader.load(_url);
        }
        
        private function loadComplete(e:Event):void{
            addChild(_loader);            
            _mc = e.currentTarget.content as MovieClip;
            trace(_mc)
        }
        
    }

何でだ〜と原因を調査。

どうも読み込まれるSWFの書き出し設定があってないらしい。

・ドキュメントプロパティの「サイズを合わせる」をデフォルトに指定
・パブリッシュ設定のSWF設定「XMPメタデータを含める」チェックボックスにチェックを入れる


とやってみたところ、ちゃんとMCに格納されて読み込めるようになりました!


素材としてFlashLiteSWFファイルを用意している場合は上記の設定に気をつける必要があります。


というか普通PCではどうでもいいことっすよね・・・。サーバサイドで複数のswfを一つのswfに合成する(もちろんFlashLite)、みたいなことをやっていて素材swfを管理するツールの一部をAS3で作っていて気がついたことでした。FlashLite、やはり扱いにくいね・・・。



追記12/5:XMPメタデータを入れると容量が1-2k増えてしまって多いに無駄なので結局AS2で読み込みツールを作ることにした・・・。