他山之石,可以攻玉
package
{
import flash.display.*;
import flash.text.TextField;
import flash.text.TextFieldAutoSize;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.events.ProgressEvent;
// import flash.display.DisplayObject;
import flash.display.Loader;
import flash.net.URLRequest;
public class Loading extends Sprite
{
var LoadTxt = new TextField(); //新建一个文本域 显示加载进度数据
var ProgressBG= new Sprite(); //把一个新的SPRITE的引用赋给ProgressBG 进度条背景色
var ProgressFore = new Sprite(); //把一个新的SPRITE的引用赋给ProgressFore 前景色
var fra_load = new MovieClip(); //fra_load.framesLoaded 见75行
var tot_frat = new MovieClip(); //tot_frat.totalFrames
var next_fra = new MovieClip(); //加载完成 下一帧 见76行
var LoadMC = new MovieClip(); //新建一个MC 装载 滚动条
var stageW=stage.stageWidth; //获得场景 宽
var stageH=stage.stageHeight; //获得场景 高
var loader:Loader = new Loader();
public function Loading()
{
// stage.scaleMode=StageScaleMode.NO_SCALE; //不缩放
stage.showDefaultContextMenu=false; //屏蔽右键菜单
stage.frameRate=12; //播放速度12帧/s
addChild(LoadMC) //加载MC
LoadTxt.autoSize=TextFieldAutoSize.CENTER //文本自适应大小.居中
LoadTxt.text="loading..."; //文本值为loading 已经载入字节数0前显示
LoadTxt.textColor=0x0000; //文本颜色 黑色
LoadTxt.selectable=true; //文件属性为 可选
LoadTxt.x=stageW/2-LoadTxt.width/2; //文本 x轴居中 文本
LoadTxt.y=stageH/2-LoadTxt.height/2; // y 居中
LoadMC.addChild(LoadTxt).name="LoadTxt"; //载入文本 并 命名 LoadTxt
ProgressBG.graphics.lineStyle(3,0x000000,0.5); //创建线条填充 粗细 3 黑色 透明度50% = 0.5 = .5
ProgressBG.graphics.beginFill(0x000000,0.5); //创建单色填充 -- -------------------
ProgressBG.graphics.drawRect(0,0,200,3); //绘制 矩形 坐标0.0 宽200 高3
ProgressBG.graphics.endFill(); //结束绘制 底色
ProgressBG.x=stageW/2-ProgressBG.width/2; //线条x轴 居中
ProgressBG.y=LoadTxt.y + LoadTxt.height + 5; //线条y轴 -------------------------------
LoadMC.addChild (ProgressBG); //载入底色
ProgressFore.graphics.lineStyle(1,0xffffff,0.5); //创建线条填充 粗细 1 白色 透明度50% = 0.5 = .5
ProgressFore.graphics.beginGradientFill(GradientType.LINEAR,[0xffffff,0xffffff],[50,50],[0,255]);
// 线性渐变 左 - 右 均白色 alphas
ProgressFore.graphics.drawRect(0,0,200,1); //绘制 矩形 坐标0.0 宽200 高1 前色
ProgressFore.graphics.endFill(); //结束绘制
ProgressFore.x=stageW/2 - ProgressFore.width/2; //线条x轴 居中
ProgressFore.y=LoadTxt.y + LoadTxt.height+6; //线条y轴 在底色中间
LoadMC.addChild (ProgressFore) //载入 前色
LoadMC.loaderInfo.addEventListener(ProgressEvent.PROGRESS,loading); //添加进度监听
LoadMC.loaderInfo.addEventListener(Event.COMPLETE,LoadSwf); //添加进度完成监听
}
function loading(eve) //显示进度载入百分比-----
{
var loadpre:int=eve.bytesLoaded/eve.bytesTotal*100; //变量loadpre=已下载字节/总字节数 再 * 100
LoadTxt.text=loadpre + " %"; //文本 输出 下载进度 %
ProgressFore.scaleX=loadpre/100; //渐变色水平缩放等于 loadpre/100
}
function LoadSwf(eve)
{
if (fra_load.framesLoaded == tot_frat.totalFrames) // 如果 已下载字节数 = 总字节数
{
removeChild(this.getChildAt(0));
loader.load(new URLRequest("player.swf"));
addChild(loader);
}
}
}
}