1.打開Flash MX 2004,選擇矩形工具,在主場景中畫出下一個只有邊框有矩形,本例該矩形大小為350*16圖元。
[size=+0]2.[size=+0]再在主場景中仍用矩形工具畫出一個只有填充而無邊框的矩形,並按F8鍵將其轉換為影片剪輯(注:其註冊點一定要選在該矩形的最左側),其實例名為bar 。本例該矩形大小為345*11圖元。
[size=+0]3.[size=+0]將上述兩矩形在主場景中排列好,使邊框矩形嵌套填充矩形。
[size=+0]4.[size=+0]在上述兩矩形旁邊用文字工具拖出一動態文字方塊,其變數名為bar_per。
[size=+0]至此,準備工作就緒,即建立了兩矩形框和一動態文字方塊,下麵準備編寫代碼。
[size=+0]5.[size=+0]在主場景中,新建一層,選中該層第1幀,按F9鍵打開動作腳本編輯視窗,輸入以下代碼:
[size=+0]this.onLoad=function(){
myBytesTotal=_root.getBytesTotal();
}
this.onLoad();
this.onEnterFrame=function(){
myBytesLoaded=_root.getBytesLoaded();
bar_xscale=myBytesLoaded/myBytesTotal*100;
percent=Math.round(bar_xscale);
this.bar._xscale=bar_xscale;
this.bar_per=percent+"%";

if(myBytesLoaded==myBytesTotal){
delete this.onEnterFrame;
_root.nextFrame();
}else{
this.stop();
}
}

[size=+0]6.[size=+0]從主場景時間軸第2幀起製作你的flash影片。
[size=+0]注解[size=+0]:
this.onLoad=function(){
myBytesTotal=_root.getBytesTotal();
}
此段代碼是指,當影片剪輯(本例指兩矩形和一動態文字方塊所存在的主場景)載入時,讀取主時間軸存在的所有元素的總位元組數並賦值給變數myBytesTotal。

[size=+0]②
this.onLoad();
flash[size=+0]事件處理函數MovieClip.onLoad=function(){…}有些奇怪,其中設置的代碼,若不在後面加上this.onLoad();,這些代碼並不能執行,因此加上這一句以便這些代碼得以執行。
[size=+0]③
myBytesLoaded=_root.getBytesLoaded();//[size=+0]讀取主時間軸存在的所有元素已載入的位元組數,並將其賦值給變數myBytesLoaded。

[size=+0]④
bar_xscale=myBytesLoaded/myBytesTotal*100;//[size=+0]將myBytesTotal折算成100時,myBytesLoaded所得到的折算值賦給變數bar_xscale,以便給主場景中bar的_xscale賦值(_xscale的最大值只能為100),這裡用到了初等數學的比例計算。

[size=+0]⑤
percent=Math.round(bar_xscale);//[size=+0]將變數bar_xscale的值取整後賦給變數percent,以便顯示的百分比不帶小數。
[size=+0]拓展:
[size=+0]1.“[size=+0]下載速度”的代碼設計
[size=+0]①[size=+0]在主場景中用文字工具拖出有適當寬度的動態文字方塊,並設其變數名為rate 。
[size=+0]②[size=+0]在主場景代碼層第1幀this.onEnterFrame=function(){}代碼體if語句前追加如下代碼:
[size=+0]t=getTimer();
rate= "[size=+0]下載速度:[size=+0]" + Math.round(myBytesLoaded/t * 100)/100 + " K/s";

2.“已用時間和剩餘時間”的代碼設計
[size=+0]①[size=+0]在主場景中用文字工具拖出有適當寬度的動態文字方塊,並設其變數名為mytimes 。
[size=+0]②[size=+0]在主場景代碼層第1幀this.onEnterFrame=function(){}代碼體if語句前追加如下代碼:

[size=+0]timeLoaded=Math.round(t/1000);
timeRemain=Math.round(timeLoaded*(myBytesTotal-myBytesLoaded)/myBytesLoaded);
timeRemain=Math.round(timeRemain/60)+":"+Math.round(timeRemain%60);
timeLoaded=Math.round(timeLoaded/60)+":"+Math.round(timeLoaded%60);
mytimes="[size=+0]已用時間"+timeLoaded+" "+"剩餘時間[size=+0]"+timeRemain;
注:若“下載速度”的代碼沒有設計,則上述代碼前應追加代碼[size=+0] t=getTimer();

拓展後主場景代碼層第1幀的全部代碼如下:
[size=+0]this.onLoad=function(){
myBytesTotal=_root.getBytesTotal();
}
this.onLoad();
this.onEnterFrame=function(){
myBytesLoaded=_root.getBytesLoaded();
bar_xscale=myBytesLoaded/myBytesTotal*100;
percent=Math.round(bar_xscale);
this.bar._xscale=bar_xscale;
this.bar_per=percent+"%";

[size=+0]
t=getTimer();
rate= "下載速度:[size=+0]" + Math.round(myBytesLoaded/t * 100)/100 + " K/s";

timeLoaded=Math.round(t/1000);
timeRemain=Math.round(timeLoaded*(myBytesTotal-myBytesLoaded)/myBytesLoaded);
timeRemain=Math.round(timeRemain/60)+":"+Math.round(timeRemain%60);
timeLoaded=Math.round(timeLoaded/60)+":"+Math.round(timeLoaded%60);
mytimes="已用時間"+timeLoaded+" "+"剩餘時間[size=+0]"+timeRemain;
if(myBytesLoaded==myBytesTotal){
delete this.onEnterFrame;
_root.nextFrame();
}else{
this.stop();
}
}
創作者介紹

資訊園

shadow 發表在 痞客邦 PIXNET 留言(0) 人氣()