我想通过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导出的电影在循环中运行。提前致谢
答案 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
}