嵌套从外部SWF加载的MovieClip后,MovieClip不会调度鼠标事件

时间:2012-09-25 18:27:22

标签: actionscript-3 flex movieclip

大多数情况下,标题中描述了问题...我试图加载包含一些名为MovieClip实例的外部SWF文件(导出和命名由Flash CS5软件完成)并添加一些外部加载(命名)MovieClip在我的代码中创建的MovieClip对象中的-s。当我将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
}

编辑:我没有提到我使用FlashBuilder 4.5在Flex中工作,我创建了ActionScript项目。上面的代码是Example类的主体,它是主要的SWF类。

编辑后编辑: myMovie.mouseChildren = false解决了这个问题。早些时候我试图设置mouseEnabled = true,但它没有解决问题。但我现在对事件流感到困惑...即使子节点是目标节点,为什么当父节点仍处于事件流时,父MovieClip上的鼠标侦听器不接收事件(在捕获阶段)?此外,当我在我的代码中创建另一个影片剪辑(内部有一些简单的形状)并将其添加到myMovie时,一切正常。当我从外部加载的SWF获取影片剪辑时有什么特别之处?

1 个答案:

答案 0 :(得分:1)

您是否尝试过myMovie.mouseEnabled = truemyMovie.mouseChildren = false