# [flash]用AS3實現Cover Flow效果 PART I - Loading

- URL: https://justfly.idv.tw/flash%e7%94%a8as3%e5%af%a6%e7%8f%becover-flow%e6%95%88%e6%9e%9c-part-i-loading/
- 日期: 2009-06-16
- 分類: WEB&amp;RIA
- 標籤: actionscript, CoverFlow, error, flash, loading, RIA, swf

雖然這次的目的是弄一個仿iPod的CoverFlow效果

而其實大概要弄的東西也都有點雛形了(還有點卡卡的@@)

不過這篇要筆記的是關於Loading的部分

以前在AS2時我習慣用兩個影格來做Loading效果

第一格放Loading的部分,判斷自己本身元件都Load進來後進到第二格

第二格就是真正的內容跟UI

但是在AS3中我開始練習把主類別指向Main.as

這麼一來FLA檔就像是只負責儲存元件庫一樣

其他所有的AS檔都可以分割開來

但這麼作的缺點好像就是不能使用時間軸來做Loading了

不管我用stop()或nextFarme()都會出現”1180: 呼叫可能未定義的方法”這樣的錯誤

後來換個想法

直接再弄個loader.swf來載入main.swf就OK了

雖然我還是很懷疑這是否為正確的做法

不過這樣做其實也是有好處拉

以後不管任何的main.swf都可以先用這個loader.swf來做載入測試了^^”

簡化一下必要的部分在這篇做個筆記吧

main.as

```
package {
	import flash.events.*;
	public class Main extends Sprite {
		public function Main() {
			addEventListener(Event.ADDED_TO_STAGE,init);
		}
		private function init(e:Event){
			//初始化
		}
	}
}
```

Loader.as

```
var loader:Loader=new Loader();
var request:URLRequest=new URLRequest('Main.swf');
loader.contentLoaderInfo.addEventListener(Event.COMPLETE,done);
loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS,onProgress);
loader.load(request);
function done(evt:Event):void{
	//可以先作隱藏LOADING的動作再把MAIN實體化
	initMain();
}
function initMain(){
	loaded.text = ""; //在舞台上命名為loaded的動態文字
	addChild(loader);
}
function onProgress(evt:ProgressEvent):void{
	txt.loaded.text = int(evt.bytesLoaded / evt.bytesTotal *100)+"%";
}
```

簡化掉了一堆Tweener的動作

所以就邏輯來看有些變得有點多此一舉

不過變化性應該會大一點囉~

等把Cover Flow效果真正完成後再來作主要的AS檔筆記…
