嵌套从外部 SWF 加载的影片剪辑后,影片剪辑不调度鼠标事件



大多数情况下,问题都在标题中描述。。。我试图加载一个外部SWF文件,其中包含一些命名的MovieClip实例(导出和命名由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
}

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

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

你试过做myMovie.mouseEnabled = truemyMovie.mouseChildren = false吗?

最新更新