ほとんどの場合、問題はタイトルに記載されています...名前付きの MovieClip インスタンスを含む外部 SWF ファイルをロードしようとしました (エクスポートと名前付けは Flash CS5 ソフトウェアによって行われます)。私のコードで作成された MovieClip オブジェクト。MOUSE_CLICK リスナーを親 MovieClip に追加すると問題が発生します。簡単に言えば、ステージでクリックしてもイベントがディスパッチされません...
private var loader:Loader;
public function Example(){
loader = new Loader();
var request:URLRequest = ... // URL to external SWF
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadingCompleted)
loader.load(request);
}
private function loadingCompleted(event:Event):void{
var mc:MovieClip = loader.content as MovieClip;
var myMovie:MovieClip = new MovieClip();
myMovie.addChild(mc.getChildByName("object_name"));
myMovie.addEventListener(MouseEvent.CLICK, myMovieClicked);
addChild(myMovie); // myMovie (with nested mc) appears on the stage
}
private function myMovieClicked(evt:Event):void{
//never reached
}
編集: ActionScript プロジェクトを作成した FlashBuilder 4.5 を使用して Flex で作業していることは言及しませんでした。上記のコードは、メインの SWF クラスである Example クラスの本体です。
回答後に編集: myMovie.mouseChildren = false
問題を解決します。以前に設定しようとしましmouseEnabled = true
たが、問題は解決しませんでした。しかし、私は今イベントフローについて混乱しています...子がターゲットノードであっても、親がまだイベントフローにあるのに、親ムービークリップのマウスリスナーが(キャプチャフェーズで)イベントを受信しないのはなぜですか? さらに、コードで別のムービー クリップを作成し (内部にいくつかの単純な形状を追加)、それを myMovie に追加すると、すべて正常に動作します。外部からロードされた SWF からムービー クリップを取得するときの特別な点は何ですか?