外部swfのオブジェクトをgetDefinitionを使ってclassとして扱う // AS3
ActionScript3で制作する際に、読込時の負荷の分散化のため、いくつかのmovieclipを外部swfとして読込みたい時があります。
そんな別ファイルにしたswfの中にあるオブジェクトもメインのswf内でライブラリにあるムービークリップと同じくnewして使いたい場合です。
この方法を知ってから、ローディングの時点で必要ないオブジェクトは全て別swfとして必要なときに読み込んでClassとして使えるので、とても重宝しています。
下のサンプルでは、外部swfファイルのparts.swf内のライブラリを画像のように設定したmc_tmpを、メインのswf内でnewして配置する場合です。
Actionscript3==========
※ライブラリの設定画面キャプチャは続きを参照
そんな別ファイルにした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);
}
※ライブラリの設定画面キャプチャは続きを参照