一个带有几个.fla的装载机屏幕

时间:2011-04-23 12:46:12

标签: flash

我在一个.fla和其他几个应该使用它的.fla文件中都有加载程序屏幕。如何将这个加载器与所有其他文件一起使用? 谢谢。

1 个答案:

答案 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>

干杯,我希望有所帮助!