我在一个.fla和其他几个应该使用它的.fla文件中都有加载程序屏幕。如何将这个加载器与所有其他文件一起使用? 谢谢。
答案 0 :(得分:1)
不确定你为什么会被投票,这在Flash-land中是一个非常标准的问题。
基本上,由预加载器.fla发布的.swf需要能够加载,然后显示由你的其他.fla发布的.swf。您可以将看起来像这样的代码放入预加载器中:
var swf1:MovieClip;
var swf2:MovieClip;
function loadFirstSwf():void {
var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, firstSWFLoaded);
loader.load( new URLRequest( "swf1.swf" ));
}
function firstSWFLoaded(e:Event):void {
swf1 = MovieClip(e.currentTarget.content);
e.currentTarget.removeEventListener(Event.COMPLETE, firstSWFLoaded);
loadSecondSwf();
}
function loadSecondSwf():void {
var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, secondSWFLoaded);
loader.load( new URLRequest( "swf2.swf" ));
}
function secondSWFLoaded(e:Event):void {
swf2 = MovieClip(e.currentTarget.content);
e.currentTarget.removeEventListener(Event.COMPLETE, secondSWFLoaded);
whatever();
}
function whatever():void {
// logic here to do whatever you need to do next.
}
loadFirstSwf();
请注意,这不是最有效的架构 - 我尽量保持简单,不确定您的AS3体验级别。有几点需要注意:
1)你按顺序调用这些。当第一个完成时,它获得第二个,等等。你可以添加第三个和第四个等等。这是为了明确它们到达的顺序。你也可以同时解雇它们,但它需要一些额外的逻辑来确保你知道从哪里来的,因为它们可以以不同于你启动它们的顺序完成。这是一个常见的菜鸟错误,我正试图设置它,这样你就不必处理它了。
2)确保在解压缩加载的.swf后从加载器中删除事件侦听器。这只是确保它们不会永远在内存中闲逛。
3)您实际上并没有使用此示例监听进度 - 如果您愿意,可以使用loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS,progressHandler),然后将代码放入进度处理程序中以侦听负载的实际当前状态。
所以,上面的例子非常简单但应该有用。如果你想获得更强大的东西,或者你正在处理很多儿童swf,那么请考虑使用GreenSock中的LoaderMax - 这是一个免费的第三方库,可以帮助您轻松管理多个文件的加载。 / p>
干杯,我希望有所帮助!