Re: [問題] 請問關於AS3的預載
※ 引述《goodray (RAY)》之銘言:
: 請問AS3還是可以這樣寫嗎?還是一定要用另外一個負責載入的
: swf檔來載入主要的swf檔,才能夠作loading bar的效果呢?
先知道,任何需要載入(無論是外部或者內部)的元件(包括.swf檔案)
被載入者(content)與載入者(loader)之間一定會有個LoaderInfo物件存在
它們之間的關係是這樣的:
Loader ───────────── Content
│ │
│ │
└───── LoaderInfo ─────┘
contentLoaderInfo→ ←loaderInfo
LoaderInfo是個EventDispatcher
一切載入的相關數據都由它的事件提供
所以你說的兩種方法都可以做到
只是看你要把誰當作loader,誰當作content而已
1.載入寫在第一格
→相當於stage是loader,.swf本身是content
所以第一格就這樣寫:
this.loaderInfo.addEventListener(ProgressEvent.PROGRESS, p);
this.loaderInfo.addEventListener(Event.COMPLETE, c);
function p(e:ProgressEvent):void {
//載入條的長度
loadingBar_mc.scaleX = e.bytesLoaded / e.bytesTotal;
}
function c(e:Event):void {
//載入完成之後想要做的事情
}
2.用一個.swf載入另外一個.swf
→相當於載入者裡面的Loader物件是loader,被載入的.swf則是content
寫法大概是這樣:
var loader:Loader = new Loader();
loader.contentLoaderInfo.addEevntListener(
ProgressEvent.PROGRESS, p);
loader.contentLoaderInfo.addEventListener(
Event.COMPLETE, c);
//載入外部.swf
loader.load(new URLRequest("content.swf"));
function p(e:ProgressEvent):void {
//載入條的長度
loadingBar_mc.scaleX = e.bytesLoaded / e.bytesTotal;
}
function c(e:Event):void {
//載入完成之後想要做的事情
//通常是將載入進來的content加到display list上面
addChild(e.content);
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.228.87.91
推
07/28 11:53, , 1F
07/28 11:53, 1F
推
07/28 11:57, , 2F
07/28 11:57, 2F
→
07/28 11:57, , 3F
07/28 11:57, 3F
推
07/28 12:05, , 4F
07/28 12:05, 4F
討論串 (同標題文章)