0

ほとんどの場合、問題はタイトルに記載されています...名前付きの 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 からムービー クリップを取得するときの特別な点は何ですか?

4

1 に答える 1

1

あなたはやってみましたmyMovie.mouseEnabled = truemyMovie.mouseChildren = false

于 2012-09-25T23:46:12.830 に答える