一个flash加载两个外部的swf,怎么是他们用同一个加载进度条

发布网友 发布时间:2024-10-24 03:02

我来回答

2个回答

热心网友 时间:2024-10-24 18:33

多说无益,给你源码吧:

import flash.display.Loader;
import flash.net.URLRequest;
import flash.events.ProgressEvent;
import flash.events.Event;

//两个Loader对象用来加载两个SWF文件
var loader_1:Loader = new Loader();
var loader_2:Loader = new Loader();
//两个URLRequest对象提供两个SWF文件地址
var url_1:URLRequest = new URLRequest("swf1.swf");
var url_2:URLRequest = new URLRequest("swf2.swf");
//前两个Number表示两个SWF分别的加载进度,第三个表示总进度
var num1:Number = new Number(0);
var num2:Number = new Number(0);
var num:Number = new Number(0);
//同时加载两个SWF文件
loader_1.load(url_1);
loader_2.load(url_2);
//设置实践,监听加载进度及加载完成事件,注意对于两个Loader对象我都用了同一种事件响应函数
loader_1.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS,OnLoader);
loader_2.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS,OnLoader);
loader_1.contentLoaderInfo.addEventListener(Event.COMPLETE,OnComplete);
loader_2.contentLoaderInfo.addEventListener(Event.COMPLETE,OnComplete);
//根据不同的对象保存不同Loader的加载进度
function OnLoader(e:ProgressEvent):void
{
if (e.currentTarget.loader == loader_1)
{
num1 = e.bytesLoaded / e.bytesTotal * 50;
}
if (e.currentTarget.loader == loader_2)
{
num2 = e.bytesLoaded / e.bytesTotal * 50;
}
num = num1 + num2;//计算总进度(0-100之间),用来定义你的加载进度条
}
//加载完成时 加入SWF到主时间轴,并注销
function OnComplete(e:Event):void
{
this.addChild(e.currentTarget.content);//可以在addChild方法前设置各自SWF的位置。
e.currentTarget.removeEventListener(ProgressEvent.PROGRESS,OnLoader);
e.currentTarget.addEventListener(Event.COMPLETE,OnComplete);
}

其实,实现的方法很对,我这种方法比较简单。
要说明的是:
1.这种方法实现的进度条并不能如实的反应加载进度与加载文件大小之间的直接关系。因为两个num1和num2我都设置了乘以系数50,而实际上应该根据文件的大小调节这两个系数。
2.不过没关系,这种方法实现的进度条是对文件个数及文件大小很好的综合反应。

热心网友 时间:2024-10-24 18:32

等待是金,我也不会啊

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com