我有这个AS3代码。它加载外部.swf文件,应该播放它。我添加了一个事件监听器,以便在加载文件时运行。它调用的函数将视频移动到最底层,这样按钮仍会显示然后播放文件。问题是事件监听器永远不会触发。任何人都可以帮忙吗?提前谢谢。
戴夫
var loadit:Loader = new Loader();
var load_request:URLRequest = new URLRequest("http://www.friedmanllp.com/video/intro.swf");
loadit.addEventListener(Event.COMPLETE, onCompleteHandler);
//swfLoader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, onProgressHandler);
//loadit.load(load_request);
function onCompleteHandler(loadEvent:Event) {
addChildAt(loadEvent.currentTarget.content, 1);
loadit.load(load_request);
}
答案 0 :(得分:3)
有些事情是错误的。
首先,您的加载程序永远不会加载,因为您从未问过它。您已将注释的加载方法调用注释掉。
另外,听听crooksy88。您需要侦听完成事件的contentLoaderInfo属性。收听Loader实例不会调度您要查找的事件。
警告 - 确保你的loadit变量没有被垃圾收集!如果您发布的代码在函数调用中运行,那么您需要将Loader实例保存在某处(例如,实例变量)以确保它保留在内存中。
代码看起来像这样:
var load_request:URLRequest = new URLRequest("http://www.mydomain.com/mySubFolder/myExternal.swf");
var loadit:Loader = new Loader();
loadit.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, onProgressHandler);
loadit.contentLoaderInfo.addEventListener(Event.COMPLETE, onCompleteHandler);
loadit.load(load_request);
function onProgressHandler(event:ProgressEvent):void
{
trace("onProgressHandler(event)");
}
function onCompleteHandler(event:Event):void
{
trace("onCompleteHandler(event)");
addChildAt(loadit, 1);
}
答案 1 :(得分:0)
试试这个......
loadit.contentLoaderInfo.addEventListener(Event.COMPLETE, onCompleteHandler);
答案 2 :(得分:0)
我使用Event.INIT解决了它:
var loadit:Loader = new Loader();
var load_request:URLRequest = new URLRequest("http://www.friedmanllp.com/video/intro.swf");
loadit.contentLoaderInfo.addEventListener(Event.INIT, onCompleteHandler);
loadit.load(load_request);
function onCompleteHandler(loadEvent:Event) {
addChildAt(loadEvent.currentTarget.content, 1);
}
答案 3 :(得分:0)
基于Fingers
的简短版本var loadIt:Loader = new Loader();
on(loadIt.contentLoaderInfo).complete += function (e:Event) {
addChildAt(e.currentTarget.content, 1);
}
loadIt.load(new URLRequest("http://www.friedmanllp.com/video/intro.swf"));