利用Action Script讓Flash擁有讀取進度的效果

這個做法是從大陸那邊看來的
自己有加上一些註解跟小修改了一下
個人認為算是不錯用的一個技術

因為之前找到的一些範例都是屬於要繪圖或者匯入圖片
對我來說有點麻煩
萬一圖不見了或者是臨時找不到圖不就挫賽?
更重要的是我很懶…我不想花時間畫圖@@

後來發現這個東西真的很方便
只要在第一格新增一個空白的關鍵影格
然後關鍵影格上編輯動作
新增以下內容

var myLoading:MovieClip;
var loadInfo:MovieClip;
var _lineColor = "0xDB0000"; //進度條外框顏色,預設值0x8EE0FF
var _lineAlpha = 40; //進度條外框透明度,預設值20
var _lineBgcolor = "0xDB0000"; //進度條實心顏色,預設值0x666666
var _FontColor = "0x20177A"; //進度條讀取的數字顏色,預設值0xFFFFFF
var _FontLocX = 0; //進度條讀取的位置X,預設值0
var _FontLocY = 20; //進度條讀取的位置Y,預設值0
var _lineLen:Number = 300; //進度條的寬度,預設值200
var _lineH:Number = 10; //進度條的高度,預設值3
var _txtColor; var _txtAlign:String = "center";
var _txtSize = 48;
var tb:Number;
var txtFormat:TextFormat = new TextFormat
("Arial", _txtSize, _FontColor, true); myLoading = _root.createEmptyMovieClip("myLoading",10); //進度條
loadInfo = myLoading.createEmptyMovieClip("line", 10);
loadInfo.lineStyle(1, _lineColor, _lineAlpha);
loadInfo.moveTo(0, 0);
loadInfo.lineTo(_lineLen, 0);
loadInfo.lineTo(_lineLen, _lineH);
loadInfo.lineTo(0, _lineH);
loadInfo.lineTo(0, 0); //進度顯示文本
loadInfo.createTextField("txt", 30, _FontLocX, _FontLocY, _lineLen, 22);
loadInfo.txt.autoSize = _txtAlign; //設置進度條的位置(居中於主場景)
loadInfo._x = (Stage.width - _lineLen)/2;
loadInfo._y = Stage.height/2; //獲得影片大小並stop,再onEnterFrame
tb = _root.getBytesTotal();
_root.stop();
myLoading.onEnterFrame = function(){
  var lb:Number = _root.getBytesLoaded();
  var percent:Number = Math.round(lb/tb*100);
  loadInfo.txt.text = percent+" %";
  loadInfo.txt.setTextFormat(txtFormat);
  loadInfo.lineStyle(_lineH, _lineBgcolor, 10);
  loadInfo.moveTo(0, _lineH/2);
  loadInfo.lineTo(percent*_lineLen/100, _lineH/2);
  if (percent == 100) {
    _root.play();
    delete this.onEnterFrame;
    loadInfo.clear();
    loadInfo.txt.text = "";
  }
}

然後就擁有了進度讀取的效果
超簡單的吧?

不過有的Flash是循環動畫
請記得在最後一格加上語法強制跳到第二格
不然會重新跑一次Loading囉

Leave a Reply

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

You may use these HTML tags and attributes:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>