繁体   English   中英

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

[英]MovieClip doesn't dispatch mouse event after nesting MovieClip loaded from external SWF

通常,标题中描述了问题。我试图加载一个外部SWF文件,其中包含一些名为MovieClip的实例(导出和命名由Flash CS5软件完成),并在其中添加一些外部加载(命名)的MovieClip-s。在我的代码中创建的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
}

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM