as3里的自制loading条
代码参考: http://blog.csdn.net/liminxin272/article/details/5898370
不过上面这个并不适用于全部由代码组成的flash文件的自身加载。
虽然有看到其他范例,但是实在太麻烦了。
想了想最快的办法应该是单独做一个loading.swf用来载入主文件。
于是花了一晚上弄了一下……
其实这样分开写其实也挺爽的。
再也不用担心那些素材会不会自动在第一帧导出之类的2B问题了。
(你看,我也被as3整出斯德哥尔摩综合征了……)
PS:loading.swf和主swf文件以及调用loading.swf的html文件放在同一个文件夹下的这种情况,本地和网页测试都成功了。
但是子文件夹之类的(比如写成"./main.swf"之类)就没试过了。
对被html文件加载的loading.swf来说,它的根目录究竟是html所在的目录,还是它自己所在的目录呢……迷。=_=b
不过上面这个并不适用于全部由代码组成的flash文件的自身加载。
虽然有看到其他范例,但是实在太麻烦了。
想了想最快的办法应该是单独做一个loading.swf用来载入主文件。
于是花了一晚上弄了一下……
其实这样分开写其实也挺爽的。
再也不用担心那些素材会不会自动在第一帧导出之类的2B问题了。
(你看,我也被as3整出斯德哥尔摩综合征了……)
PS:loading.swf和主swf文件以及调用loading.swf的html文件放在同一个文件夹下的这种情况,本地和网页测试都成功了。
但是子文件夹之类的(比如写成"./main.swf"之类)就没试过了。
对被html文件加载的loading.swf来说,它的根目录究竟是html所在的目录,还是它自己所在的目录呢……迷。=_=b
loading.swf(第一帧代码)
import flash.events.Event;
import flash.events.ProgressEvent;
//创建LOADING用MC
var loadclip:MovieClip=new MovieClip();
//添加loadclip到舞台
addChild(loadclip);
var stageW=stage.stageWidth;
var stageH=stage.stageHeight;
//进度文字
var txt:TextField=new TextField();
txt.selectable=false;
//自定义文字样式
var format:TextFormat = new TextFormat();
format.font="Verdana";
format.color = 0x003300;
format.size = 20;
txt.defaultTextFormat = format;
//自动调整文本框大小,避免字体显示不全
txt.autoSize=TextFieldAutoSize.CENTER;
txt.x=stageW/2-txt.width/2;
txt.y=stageH/2-txt.height/2;
loadclip.addChild(txt);
//绘制进度条底色并且添加到loadclip
var stgb=new Sprite();
//边框颜色
stgb.graphics.lineStyle(1,0x666666,1);
stgb.graphics.drawRect(0,0,302,25);
stgb.graphics.endFill();
stgb.x=stageW/2-stgb.width/2;
stgb.y=txt.y+35;
loadclip.addChild(stgb);
//绘制进度条并且添加到loadclip
var stg=new Sprite();
stg.graphics.lineStyle(1,0x000000,0);
stg.graphics.beginFill(0x003300,.8);
stg.graphics.drawRect(0,1,300,24);
stg.graphics.endFill();
stg.x=stageW/2-stg.width/2;
stg.y=txt.y+35;
loadclip.addChild(stg)
var my_Loader:Loader;
my_Loader = new Loader();
my_Loader.load(new URLRequest("main.swf")); //这里是原swf文件的名字,也可以写成URL什么的,但是可能会被墙……
my_Loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loader_complete);
my_Loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, loader_progress);
//加载中途
function loader_progress(e:ProgressEvent)
{
var loadpre:int=e.bytesLoaded/e.bytesTotal*100;
txt.text="Loading "+loadpre+" %";
stg.scaleX=loadpre/100;
}
//加载完成后
function loader_complete(e:Event)
{
trace("加载完成");
addChild(my_Loader);
}
import flash.events.ProgressEvent;
//创建LOADING用MC
var loadclip:MovieClip=new MovieClip();
//添加loadclip到舞台
addChild(loadclip);
var stageW=stage.stageWidth;
var stageH=stage.stageHeight;
//进度文字
var txt:TextField=new TextField();
txt.selectable=false;
//自定义文字样式
var format:TextFormat = new TextFormat();
format.font="Verdana";
format.color = 0x003300;
format.size = 20;
txt.defaultTextFormat = format;
//自动调整文本框大小,避免字体显示不全
txt.autoSize=TextFieldAutoSize.CENTER;
txt.x=stageW/2-txt.width/2;
txt.y=stageH/2-txt.height/2;
loadclip.addChild(txt);
//绘制进度条底色并且添加到loadclip
var stgb=new Sprite();
//边框颜色
stgb.graphics.lineStyle(1,0x666666,1);
stgb.graphics.drawRect(0,0,302,25);
stgb.graphics.endFill();
stgb.x=stageW/2-stgb.width/2;
stgb.y=txt.y+35;
loadclip.addChild(stgb);
//绘制进度条并且添加到loadclip
var stg=new Sprite();
stg.graphics.lineStyle(1,0x000000,0);
stg.graphics.beginFill(0x003300,.8);
stg.graphics.drawRect(0,1,300,24);
stg.graphics.endFill();
stg.x=stageW/2-stg.width/2;
stg.y=txt.y+35;
loadclip.addChild(stg)
var my_Loader:Loader;
my_Loader = new Loader();
my_Loader.load(new URLRequest("main.swf")); //这里是原swf文件的名字,也可以写成URL什么的,但是可能会被墙……
my_Loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loader_complete);
my_Loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, loader_progress);
//加载中途
function loader_progress(e:ProgressEvent)
{
var loadpre:int=e.bytesLoaded/e.bytesTotal*100;
txt.text="Loading "+loadpre+" %";
stg.scaleX=loadpre/100;
}
//加载完成后
function loader_complete(e:Event)
{
trace("加载完成");
addChild(my_Loader);
}