本文通过百分比来控制显示对象的进度条,在实际开发中,经常遇到下载进度条、播放进度条,以及游戏对角色的生命值显示或时间进度等,都是通过百分比来实现;本文通过百分来来控制图片的透明度alpha值,以及通过一个进度条关联百分比来显示图片的透明情况,以及图片的放大缩小均以百分比来控制,另外则捎带的简单实现图片拖拽控制功能。
百分比公式 “当前数据÷总数据×100%=当前百分比” 和 “ 总数据×当前百分比=当前数据”,在ActionScript3.0 编程中 当前数据÷总数据×100=当前百分比 和 总数据×当前百分比÷100=当前数据 在此处百分号省略,因为将百分比赋值给label或动态文本,将 当前百分比 的值后面加一个字符“%”即可。
示例:如总路程为1000米,当前走了200米,要获得当前行走路程占总路程的百分比?那么就是 200/1000*100=20这是在程序中的写法,在赋值给label或动态文本时将20后面加一个字符“%”,即输出“20%”。而实际算法是“200÷1000×100%=20%”得到20%;反过来获取当前行程即1000*20/100=200,当前行程为200米,在实际算法中是1000×20%=200(米);然后很多时候需要取整,则用四舍五入方式来取整,在程序编写中则是Math.round(需要取整的数值),如数值25.356,则是Math.round(25.356)为25。
通过上面公式和示例,在程序编写过程中将以各种事件响应、触发公式的算法,从而获得公式的结果,把程序实际场景中的数值参数传入公式,套入公式进行算取 。
var seebar:MovieClip=seebar; var seebarOutline:MovieClip=seebarOutline; var MyUIlaoder:UILoader=Uload; MyUIlaoder.source="DSCF8463_04.png";//指定图片 var carryNum:Number=10;//十进制 可自定随意设定数值 var Num3:Number=Math.round((Number)(seebar.width)/(Number)(seebarOutline.width)*100); //var Num4:Number; //Copyright (C) 遺昕 | weisim3.com 01,05,2011 //ActionScript3.0 百分比控制对象 //////////////////MyUIlaoder-透明度alpha控制/////////////////////////// MyUIlaoder.alpha=(1*Num3)/100; view_txt.text=Num3.toString()+"%"; view_txt.autoSize=TextFieldAutoSize.LEFT; function high(e:Event):void { //Num3=6/12*100; //(Number)( Anum_txt.text)*((Number)(Bnum_txt.text)/100); //12000/800000×100% if (Num3<100) { seebar.width+=carryNum; } Num3=Math.round((Number)(seebar.width)/(Number)(seebarOutline.width)*100); if (seebar.width>seebarOutline.width) { seebar.width=seebarOutline.width;//seebar.width>seebarOutline.width Num3=Math.round((Number)(seebar.width)/(Number)(seebarOutline.width)*100); } MyUIlaoder.alpha=(1*Num3)/100;//(Number)(MyUIlaoder.alpha) view_txt.text=Num3.toString()+"%"; trace(Num3.toString()+"%");//百分比 trace(MyUIlaoder.alpha); //trace(Num4.toString()); } Get_btn.addEventListener(MouseEvent.CLICK,high); function low(e:Event):void { if (Num3>=-1) { seebar.width-=carryNum; } Num3=Math.round((Number)(seebar.width)/(Number)(seebarOutline.width)*100); if (seebar.width<carryNum) { seebar.width=0; Num3=Math.round((Number)(seebar.width)/(Number)(seebarOutline.width)*100); } MyUIlaoder.alpha=(1*Num3)/100; view_txt.text=Num3.toString()+"%"; trace(Num3.toString()+"%"); trace(MyUIlaoder.alpha); } Get_low.addEventListener(MouseEvent.CLICK,low); /////////////////////MyUIlaoder-缩放控制//////////////////////////////////////// var myScaleX:Number=MyUIlaoder.scaleX; var myscaleY:Number=MyUIlaoder.scaleY; var MyUIlaoderX=MyUIlaoder.x; var MyUIlaoderY=MyUIlaoder.y; var dragX:Number=MyUIlaoder.width; var dragY:Number=MyUIlaoder.height; var myZooNumber:Number; zooTitle_txt.autoSize=TextFieldAutoSize.LEFT; zooTitle_txt.text="----"; var ZooInNum:Number=500;//放大最大值500% zooIn_mc.addEventListener(MouseEvent.CLICK,zooIn); function zooIn(e:Event):void { //if (myZooNumberMyUIlaoder.scaleX+=0.1; MyUIlaoder.scaleY+=0.1; //} myZooNumber=(MyUIlaoder.scaleX/myScaleX*100); if (myZooNumber>=ZooInNum) { MyUIlaoder.scaleX=myScaleX*500/100; MyUIlaoder.scaleY=myScaleX*500/100;//.scaleY; myZooNumber=(MyUIlaoder.scaleX/myScaleX*100); } zooTitle_txt.text=Math.round(myZooNumber).toString()+"%"; trace(MyUIlaoder.width+"--"+MyUIlaoder.height); } var ZooOutNum:Number=100;//缩小最小值100% zooOut_mc.addEventListener(MouseEvent.CLICK,zooOut); function zooOut(e:Event):void { if (myZooNumber>ZooOutNum) { MyUIlaoder.scaleX-=0.1; MyUIlaoder.scaleY-=0.1; trace(MyUIlaoder.width+"--"+MyUIlaoder.height); } myZooNumber=(MyUIlaoder.scaleX/myScaleX*100); if (myZooNumber<=ZooOutNum) { MyUIlaoder.scaleX=myScaleX*ZooOutNum/100; MyUIlaoder.scaleY=myscaleY*ZooOutNum/100;//.scaleY; myZooNumber=(MyUIlaoder.scaleX/myScaleX*100); } if (myZooNumber==ZooOutNum) {//复原位置 MyUIlaoder.x=MyUIlaoderX; MyUIlaoder.y=MyUIlaoderY; myZooNumber=(MyUIlaoder.scaleX/myScaleX*100); } zooTitle_txt.text=Math.round(myZooNumber).toString()+"%"; } //////////////////////////MyUIlaoder-推拽/////////////////////////////////// var rect=new Rectangle(- dragX/4,- dragY/4,dragX/2,dragY/2);//拖拽区域制定 MyUIlaoder.addEventListener(MouseEvent.MOUSE_DOWN, startDrags); function startDrags(event:MouseEvent):void { //当MyUIlaoder的缩放值大于100%时才可以实现推拽 if (myZooNumber>ZooOutNum) { MyUIlaoder.startDrag(false,rect); } } MyUIlaoder.addEventListener(MouseEvent.MOUSE_OUT, stopDrags); MyUIlaoder.addEventListener(MouseEvent.MOUSE_UP, stopDrags); function stopDrags(event:MouseEvent):void { //当MyUIlaoder的缩放值大于100%时才可以实现推拽 if (myZooNumber>ZooOutNum) { MyUIlaoder.stopDrag(); } }