外部swfのオブジェクトをgetDefinitionを使ってclassとして扱う // AS3

ActionScript3で制作する際に、読込時の負荷の分散化のため、いくつかのmovieclipを外部swfとして読込みたい時があります。
そんな別ファイルにしたswfの中にあるオブジェクトもメインのswf内でライブラリにあるムービークリップと同じくnewして使いたい場合です。
この方法を知ってから、ローディングの時点で必要ないオブジェクトは全て別swfとして必要なときに読み込んでClassとして使えるので、とても重宝しています。

下のサンプルでは、外部swfファイルのparts.swf内のライブラリを画像のように設定したmc_tmpを、メインのswf内でnewして配置する場合です。

Actionscript3==========
function setMainParts(){
    mainLoader = new Loader();
    var myRequest:URLRequest = new URLRequest("parts.swf");
    mainLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, drawParts);
    mainLoader.load(myRequest);           
}

var mc_tmp:Class;   
function drawParts(event:Event):void {
    mc_tmp = mainLoader.contentLoaderInfo.applicationDomain.getDefinition("mc_tmp") as Class;
    var tmp = new mc_tmp();   
    addChild(tmp);               
}           

※ライブラリの設定画面キャプチャは続きを参照

シンボルのプロパティ画面

Bookmark and Share


ブックマークに追加