0

大多数情况下,标题中描述了问题......我试图加载一个包含一些命名MovieClip实例的外部SWF文件(导出和命名由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 项目。上面的代码是示例类的主体,它是主要的 SWF 类。

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

4

1 回答 1

1

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

于 2012-09-25T23:46:12.830 回答