Flash AS3事件侦听器错误

时间:2011-11-07 17:59:00

标签: flash actionscript-3 addeventlistener event-listener

我有这个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);
    }

4 个答案:

答案 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"));
相关问题