Actionscript 3 如何循环加载程序加载的SWF文件?

Actionscript 3 如何循环加载程序加载的SWF文件?,actionscript-3,flash,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(ur

我想循环一个通过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);
    }
}

据我所知,加载程序在嵌入的电影完成时没有事件?有没有办法解决这个问题?它不能是AS3实现。我只想要一部从Indesign导出的电影以循环方式运行。提前感谢

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

保留该电影和加载程序的引用:

private var theLoadedMovie:MovieClip;
private var myLoader:Loader;
侦听INIT事件而不是完整事件(具有时间轴的电影在加载第一帧“INIT”时开始播放,完整事件在加载整个电影时触发)

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

theLoadedMovie = myLoader.content as MovieClip;
addChild(theLoadedMovie);
theLoadedMovie.addEventListener(Event.ENTERFRAME, handleEnterFrame);
在HandleInterframe方法中,检查电影进度以了解其何时结束:

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

提示:在加载之前,您应该添加完整的侦听器。在使用
load()
之前,您应该添加加载程序侦听器。在某些情况下,它可能会在完成当前线程的执行之前从加载中返回。我同意这是最好的方法(+1),也可以使用“addFrameScript”以较少的代码行完成,但
addFrameScript
是未记录的,最好不要依赖它。这是复制和粘贴时发生的情况。加载应该在课程结束时进行。addFrameScript更好,但正如您所说,它没有文档化,初学者更难使用。感谢您的回复。实际上,我来自解释匿名函数调用的java和javascript背景;)事实证明,swf文件没有自己的时间线,调用totalFrames导致2。我想这是因为文件是在Indesign中创建的。无论如何我都会接受你的回答。
if(theLoadedMovie.currentFrame == theLoadedMovie.totalFrames)
{
     //movie has reached then end
}