1. 首頁
  2. »
  3. 網頁開發
  4. »
  5. Flash
  6. »
  7. [AS3]Loading(整個swf檔案)

[AS3]Loading(整個swf檔案)

2008/12/02

  先前已分享過Loading的製作,雖然那範例已經可以運作,但應該會發現,即便當載入完成後設成play();它依然只會停留在下一格,不會向下繼續的撥放,因此梅干桑最近又花了一點時間,修正了此bug同時當載入完成後,再加入了淡出的效果,同時此範例運用了二個場景,將Loading的元件及語法放置在loading的場景中,主要的原因在於,當要放在一起也是可以,但flash在讀入時,會比較慢一些,當畫面出來時已經載入30~40了,因此特地獨立出來,一方面為了避開此問題外,另一方面也比較好管理。


Step1
按下Shift+F2鍵,開啟場景面板,並於下方的+圖示,點一下新增一個新場景,並將場景命名為loading,同時拖拉到最上面。


Step2
loading場景中建立一個影片元件並將實體名稱命名為loadObj


Step3
雙響在loadObj影片元件,分別在此元件內建立一個動態文字框、loadBar、背景圖,特別注意的則是在loadBar 的部分,裡面請自行設計0~100格的動畫。


Step4
都完成後,回到loading場景中,並新增一個圖層,並命名為as,再將下列的語法貼入影格1中。
影格1 Loading語:this.root.loaderInfo.addEventListener(ProgressEvent.PROGRESS, progressHandler);
this.root.loaderInfo.addEventListener(Event.COMPLETE, goNext);
// 處理載入進度的自訂函數
function progressHandler(e:ProgressEvent):void {
var percent:Number = e.bytesLoaded / e.bytesTotal;
loadObj.bar_mc.gotoAndStop(Math.floor(percent * 100));
loadObj.percent_txt.text = "Loading…."+String(Math.floor(percent * 100))+"%";
stop();
}
//
function goNext(e:Event):void {
loadObj.addEventListener(Event.ENTER_FRAME,removeHandler);
}
function removeHandler(e:Event) {
//濾鏡將文字做點陣處理了
loadObj.cacheAsBitmap = true;
loadObj.alpha -= (1+loadObj.alpha)*0.05034;
if (loadObj.alpha <= 0) {
//移除enter_frame事件
loadObj.removeEventListener(Event.ENTER_FRAME, removeHandler);
nextScene();
}
}


[範例預覽] [範例下載]