【问题标题】:Unable to listen for an event dispatched from an embedded swf无法侦听从嵌入式 swf 调度的事件
【发布时间】:2011-10-18 03:05:37
【问题描述】:

我有一个带有嵌入式 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 分派的事件永远不会被侦听器接收到?

谢谢:)

【问题讨论】:

  • 这与嵌入式计算机系统的编程无关。重新标记

标签: actionscript-3 embed


【解决方案1】:

我设法通过使用:

stage.dispatchEvent(new Event(Event.COMPLETE));

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 感谢 Jens,这并不是我正在监听的 COMPLETE 事件是否完成加载,Event.COMPLETE 只是我选择在动画中途手动触发的事件。我已经尝试过使用其他事件,但没有一个被捡起。在这种情况下,触发哪个事件对我来说真的无关紧要,我只需要从嵌入式 swf 调度任何事件并被侦听器拾取。
    • 好的明白。我想知道为什么监听器没有注册到 loaderInfo 实例。
    猜你喜欢
    • 2011-09-19
    • 2012-03-24
    • 1970-01-01
    • 1970-01-01
    • 2018-08-06
    • 2020-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多