我時常寫出一些很肥的Flash作品,於是做一些Loading的畫面就變得很重要,每一代的ActionScript都有不一樣的Loading方式, 以下是在PTT上面的Flash討論版的強者cjcat2266告訴我的,我在這邊留個筆記,以免我下次忘了怎麼用…
以下大量引用原作者cjcat2266的句子
基本上,任何需要載入(無論是外部或者內部)的元件(包括.swf檔案)被載入者(content)與載入者(loader)之間一定會有個LoaderInfo物件存在,LoaderInfo是個EventDispatcher,一切載入的相關數據都由它的事件提供,以下是兩個常用的Loading方式:
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);
}
如果compile的時候出現什麼錯誤,通常是因為還沒載入那個事件類別,例如我就是先import flash.events.ProgressEvent; 才能夠正常的執行這個Loading的程序。
2 comments:
何時會有新作品呢?
很期待~
sorry~最近要吃枸杞補一下眼睛
找到新作了!
Post a Comment