Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flash AS3事件侦听器错误_Flash_Actionscript 3_Addeventlistener_Event Listener - Fatal编程技术网

Flash AS3事件侦听器错误

Flash AS3事件侦听器错误,flash,actionscript-3,addeventlistener,event-listener,Flash,Actionscript 3,Addeventlistener,Event Listener,我有一些AS3代码。它加载一个外部的.swf文件并播放它。我添加了一个事件侦听器,在加载文件时运行。它调用的函数将视频移动到最底层,这样按钮仍会显示,然后播放文件。问题是事件侦听器从不触发。有人能帮忙吗?提前谢谢 戴夫 试试这个 loadit.contentLoaderInfo.addEventListener(Event.COMPLETE, onCompleteHandler); 有几件事不对 首先,您的加载程序将永远不会加载,因为您从未要求它加载。您已将load方法调用注释掉 还有,

我有一些AS3代码。它加载一个外部的.swf文件并播放它。我添加了一个事件侦听器,在加载文件时运行。它调用的函数将视频移动到最底层,这样按钮仍会显示,然后播放文件。问题是事件侦听器从不触发。有人能帮忙吗?提前谢谢

戴夫

试试这个

loadit.contentLoaderInfo.addEventListener(Event.COMPLETE, onCompleteHandler);   

有几件事不对

首先,您的加载程序将永远不会加载,因为您从未要求它加载。您已将load方法调用注释掉

还有,听我说。您需要侦听完成事件的contentLoaderInfo属性。侦听加载程序实例不会分派您正在查找的事件

还有一个警告——确保loadit变量未被垃圾收集!如果您发布的代码在函数调用中运行,那么您需要将加载程序实例持久化到某个位置(例如,保存到实例变量),以确保它保留在内存中

代码应该如下所示:

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);
}

我使用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);
    }
基于


我以前试过,从来没用过。没有对此进行预加载。它只是运行。这有关系吗?为什么第一次调用//loadit.load(load\u请求);评论?您的加载程序似乎从未加载任何数据
onCompleteHandler
事件的目的是什么?它是如何在调用加载方法之前进行调度的?在视频被分配到正确的层之前,我已经将其注释掉了。所以你会听到它,但几秒钟内看不到它。可能是事件。完成。我首先尝试将load事件移动到addChildAt代码行之后。所以我使用Event.INIT,这就解决了它。请你把-1拆下好吗。我觉得这是一个非常有效的问题,尽管最后我自己解决了。谢谢你冗长的回答。我已经通过使用Event.INIT而不是Event.COMPLETE解决了这个问题。
    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);
    }
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"));