以下是較為簡略的寫法──
這是主要Load子SWF檔案的程式:
package {
import flash.display.*;
import flash.events.*;
import flash.net.URLRequest;
public class _loading extends Sprite{
var scene:*;
var loadingbar:MovieClip;
var _ldr:Loader = new Loader();
public function _loading(){loadSwf();}
function loadSwf(){
_ldr.load(new URLRequest("test.swf"));
_ldr.contentLoaderInfo.addEventListener(Event.COMPLETE , loadGameComplete,false, 0, true);
loadingbar = new _LoadBar();
loadingbar.setLoader(LoaderInfo(_ldr.contentLoaderInfo));
}
function loadGameComplete(e:Event):void {
scene= _Ldr.content;
_ldr.contentLoaderInfo.removeEventListener(Event.COMPLETE , loadGameComplete);
}
}
}
這是進度條的程式:
package {
import flash.display.*;
import flash.events.*;
public class _LoadBar extends MovieClip{
var linf:LoaderInfo = null;
public function _LoadBar(){init();}
public function init() {
this.scaleX = 0;
addEventListener(Event.ENTER_FRAME, LoadingNow, false, 0, true);
}
public function setLoader(loads:LoaderInfo) {
linf = loads;
}
function LoadingNow(e:Event){
var percent:Number=0;
if (linf!=null && linf.bytesTotal != 0){percent = linf.bytesLoaded/linf.bytesTotal;}
loadbar.scaleX = percent;
if (percent >=1) LoadOver();
}
function LoadOver(){
removeEventListener(Event.ENTER_FRAME, LoadingNow);
}
}
}
基本上其實要混用ProgressEvent才能達到更好的效果,因為LoaderInfo要在Event.COMPLETE之後才會有資料,否則LoaderInfo只是個null。
但我不用ProgressEvent的原因在於...我一直無法取得ProgressEvent.PROGRESS監聽事件的運行...
五月份補充說明:
已經知道ProgressEvent.PROGRESS監聽事件的運行方法了:
var ldr:Loader = new Loader();
ldr.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, loadingEvent);
function loadingEvent(e:ProgressEvent){
trace("正在讀取中哦~");
}
沒有留言:
張貼留言
歡迎大家留言提問,我會答的都會盡力回答!
如果太久沒出現回應就是我又忘記回來看留言了TAT