无法侦听从嵌入式swf调度的事件

时间:2011-08-02 10:04:28

标签: actionscript-3 embed

我有一个带有嵌入式swf的as3类。我需要嵌入式swf来调度一个事件,并对该事件进行as3类操作。当嵌入式嵌入式swf被嵌入并作为外部swf加载时,这常常工作正常,但是现在嵌入式侦听器永远不会接收到调度事件。

我在下面创建了一个简化示例,永远不会调用'onMovieComplete'函数。

/*  I have an external swf file 'movie.swf' with a simple animation in it.
 *  When the animation hits a frame (frame 70 in this case) it fires a
 *  Event.COMPLETE (using:- "this.dispatchEvent(new Event(Event.COMPLETE));" )
 */

 package {

    public class ExampleSwf extends MovieClip {

        [Embed(source="movie.swf")] private var MovieSwf:Class;

        private var movie:MovieClipAsset;

        public function ExampleSwf() {
            this.addEventListener(Event.ADDED_TO_STAGE, init);
        }

        private function init(e:Event):void {
            this.removeEventListener(Event.ADDED_TO_STAGE, init);

            this.movie = new MovieSwf();
            this.addChild(this.movie);
            this.movie.addEventListener(Event.COMPLETE, onMovieComplete);
        }

        private function onMovieComplete(e:Event):void {
            var foo:String = "bar";
        }

    }

 }

有谁知道为什么侦听器永远不会从嵌入式swf调度的事件被选中?

谢谢:)

2 个答案:

答案 0 :(得分:1)

我设法通过使用:

来实现这一目标
stage.dispatchEvent(new Event(Event.COMPLETE));

在我的嵌入式movie.swf文件中,然后在我的as3类中使用:

this.movie.stage.addEventListener(Event.COMPLETE, onMovieComplete);

答案 1 :(得分:0)

当您嵌入电影时,它将在您创建实例并将其添加到舞台时准备就绪。您不需要监听COMPLETE事件。