如何循环加载Loader的SWF文件?

时间:2014-06-24 19:13:31

标签: actionscript-3 flash

我想通过AS3中的Loader类循环已经加载的swf文件。 我的代码如下:

public class MyLoader extends MovieClip {
    public function MyLoader() {
        var myLoader:Loader = new Loader();
        var url:URLRequest = new URLRequest("external-movie.swf");
        myLoader.load(url);
        myLoader.contentLoaderInfo.addEventListener("complete", function() {
      });
      addChild(myLoader);
    }
}

根据我的理解,Loader没有关于嵌入式电影何时完成的事件?有没有办法解决这个问题?它不能是AS3实现。我只想要一个从Indesign导出的电影在循环中运行。提前致谢

1 个答案:

答案 0 :(得分:1)

特别是当您几乎没有编程经验时,应该避免使用脏快捷方式,因为它们只会给您带来很多麻烦。因此,请避免使用匿名函数,并避免使用字符串代替静态事件变量。 这就是说,如果你加载的电影有自己的时间线,那么它将被转换为MovieClip。此电影也不是嵌入式的,而是加载的,这是一个很大的区别。

保留该电影和装载者的参考:

private var theLoadedMovie:MovieClip;
private var myLoader:Loader;

侦听INIT事件而不是COMPLETE事件(当第一帧加载“INIT”时,时间轴开始播放的电影,加载整部电影时会触发COMPLETE事件)。

myLoader = new Loader();
var url:URLRequest = new URLRequest("external-movie.swf");
myLoader.load(url);
myLoader.contentLoaderInfo.addEventListener(Event.INIT, handleInit);

在你的handleInit方法中保留该电影的引用:

theLoadedMovie = myLoader.content as MovieClip;
addChild(theLoadedMovie);
theLoadedMovie.addEventListener(Event.ENTERFRAME, handleEnterFrame);
handleEnterFrame方法中的

检查影片进度以了解它何时结束:

if(theLoadedMovie.currentFrame == theLoadedMovie.totalFrames)
{
     //movie has reached then end
}