创建自己的ProgressBar组件
2008-04-02 10:31:06来源:互联网 阅读 ()
今天在flash gamer群和一朋友讨论组件的制作,今天在硬盘里翻了翻,找到了几个用mx2004做的组件。
这个是纯as的ProgressBar
as文档
*loodingbar
*
*@作者章精设(zjs35)
*@版本
v1
*/
importfc.graphics.draw2d.Rect;
importfc.graphics.draw2d.GDI;
importfc.graphics.*;
importfc.text.DrawString;
importfc.utils.Delegate;
importfc.events.EventDispatcher;
importmx.core.UIObject;
[Event("complete")]
[Event("progress")]
[TagName("ProgressBar")]
[IconFile("ProgressBar.png")]
classProgressBarextendsUIObject{
privatevardispatchEvent:Function;
publicvaraddEventListener:Function;
publicvarremoveEventListener:Function;
privatevar_bar:GDI;
privatevar_str:DrawString;
privatevar_mc:MovieClip;
var_source:Object;
var_id:Number;
varbar:MovieClip;
publicfunctionProgressBar(){
EventDispatcher.initialize(this);
}
functiongetsource(){
returngetSource();
}
[Inspectable(defaultvalue="")]
functionsetsource(x){
setSource(x);
}
functiongetSource(Void){
return_source;
}
functionsetSource(val):Void{
if(typeof(val)=="string"){
val=eval(val);
}
if(val!=null&&val!=undefined&&val!=""){
_source=val;
//trace([_source,typeof(_source)]);
_id=setInterval(this,"setProgress",80);
dispatchEvent({type:"progress",value:0,target:this});
}
}
functionsetProgress(){
if(!_visible){
_visible=true;
}
varp1=_source.getBytesLoaded();
varp2=_source.getBytesTotal();
varp=fc.math.Num.point(p1/p2,2)*100;
_mc._xscale=p;
vars="加载" p "%";
dispatchEvent({type:"progress",value:p,target:this});
_str.reset(s);
if(p>=100){
dispatchEvent({type:"complete",value:_source,target:this});
clearInterval(_id);
complete();
}
}
functioncomplete(){
_bar.target=_mc;
_bar.clear();
_bar.target=this;
_bar.clear();
_str.clear();
init();
}
publicfunctioninit(){
super.init();
//width=bar._width;
//height=bar._height;
bar._visible=false;
}
functiondraw(){
//loading条的尺寸
var_w=__width;
var_h=__height;
//文本创建
_str=newDrawString();
_str.target=this;
_str.format(0x333333,"Tahoma",11);
_str.draw("加载0%");
_str.setXy(_w,(_h-_str.height)/2);
_bar=GDI.getInstance();
//背景
_bar.target=this;
_bar.fill(newSolidBrush(Color.fill,100),newRect(0,0,_w,_h));
_bar.line(newPen(1,0x919999,100),newRect(0,0,_w,_h));
_bar.line(newPen(1,0xd5dddd,100),newRect(2,2,_w-2,_h-2));
//loading条
_mc=this.createEmptyMovieClip("back",this.getNextHighestDepth());
_bar.target=_mc;
_bar.fill(newSolidBrush(Color.line,40),newRect(2,2,_w-2,_h-2));
_mc._xscale=0;
//_visible=false;
}
functionsize(){
super.size();
}
}
图片如下:
图片如下:
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇: Flash和三维全景结合
下一篇: 在Flash中侧转视角的绘法
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash