Loaderクラスを使用して1つのswfを別のswfにロードしていますが、子swfのロードが終了して表示リストに追加されると、そのドキュメントクラスはインスタンス化されません。オブジェクトの作成時に実行する必要のあるトレースステートメントがいくつかありますが、親SWFにロードしても何も起こりません。子SWFを単独でコンパイルすると、ドキュメントクラスは期待どおりに実行されます。
だから私は疑問に思っています...子SWFのドキュメントクラスをどのように関連付けるのLoader.content
ですか?
以下の岸のソリューションで更新されたコード。
public class Preloader extends Sprite {
import flash.net.*;
import flash.display.*;
import flash.events.*;
// code in parent SWF's Document Class (Preloader.as)
private var swfLoader:Loader;
public var mainMovie:MovieClip;
public function Preloader(){
swfLoader = new Loader();
swfLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, loaderDone);
swfLoader.load(new URLRequest("mainmovie.swf"));
}
private function loaderDone(e:Event):void {
// Cast Loader.content to MovieClip
mainMovie = MovieClip(swfLoader.content);
mainMovie.addEventListener(Event.ADDED_TO_STAGE, mainMovieAddedListener);
addChildAt(mainMovie, 0);
}
private function mainMovieAddedListener(e:Event):void {
// init() not necessary
}
}
// MainMovie.as runs after casting swfLoader.content to MovieClip
public class MainMovie extends Sprite {
public function MainMovie(){
trace('MainMovie WHATTUP');
}
public function init():void {
trace('init');
}
}
乾杯!