我有一个带有嵌入式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调度的事件被选中?
谢谢:)
答案 0 :(得分:1)
我设法通过使用:
来实现这一目标stage.dispatchEvent(new Event(Event.COMPLETE));
在我的嵌入式movie.swf文件中,然后在我的as3类中使用:
this.movie.stage.addEventListener(Event.COMPLETE, onMovieComplete);
答案 1 :(得分:0)
当您嵌入电影时,它将在您创建实例并将其添加到舞台时准备就绪。您不需要监听COMPLETE事件。