- 沒有新回應!
如果你有試作過我寫的 連續載入2 http://blog.xuite.net/ben19770209/ASBeginner/4134236 的話,你可能會注意到,怎麼 MovieClipLoader 的 onLoadProgress() 好像沒有作用似的,不是應該要產生一個文字訊息顯示載入進度的嗎,可是卻沒有看到效果。
其實我自己也被這個問題困擾了一陣子,也還不知道為何我的 MovieClipLoader 的 onLoadProgress() 會沒有作用,這大約是在我安裝完 Flash 8 測試版之後,就開始遇到了,所以也就是大概這一兩個月的事情,但是我想應該與 Flash 8 沒有什麼關係吧。總之,在找到問題之前,我可以改回不使用 MovieClipLoader,而是自己用 MovieClip 去 loadMovie(),並且自己做偵測,就可以達到我想要的效果了。
//一直欄多少張相片
_global.COUNT_PHOTOS_COL = 4;
//縮圖間距
_global.T_PHOTO_OFFSET = 5;
//縮圖大小
_global.T_PHOTO_SIZE = 70;
//相片資料
var PHOTO_DIR:String = "http://pic.bahamut.com.tw/NEWODIN/9/";
var photoFiles:Array = new Array();
photoFiles.push("0052192");
photoFiles.push("0052193");
photoFiles.push("0052194");
photoFiles.push("0052195");
photoFiles.push("0052196");
photoFiles.push("0052197");
photoFiles.push("0052198");
photoFiles.push("0052199");
photoFiles.push("00521910");
photoFiles.push("00521911");
photoFiles.push("00521912");
photoFiles.push("00521913");
photoFiles.push("00521914");
photoFiles.push("00521915");
photoFiles.push("00521916");
photoFiles.push("00521917");
//負責載入的mc
var photos_mc:MovieClip = this.createEmptyMovieClip("photos_mc", 2);
for (var i = 0; i< photoFiles.length; i++) {
//每一個放圖片的容器
var photo_mc:MovieClip = photos_mc.createEmptyMovieClip("photo"+i+"_mc"
, photos_mc.getNextHighestDepth());
//允許這個容器,能發出自定事件
mx.events.EventDispatcher.initialize(photo_mc);
//將一些參數定義給這個容器
photo_mc.id = i;
photo_mc.file = PHOTO_DIR+photoFiles[i];
photo_mc.loadImg_mc = photo_mc.createEmptyMovieClip("loadImg_mc", 2);
//當別的相片容器 photoLoaded 時,這個 mc 要能接收並處理
photo_mc.photoLoaded = function(evtObj:Object) {
//當執行權已經到自己身上時,就不用再監聽上一個 mc 的事件了
if (this.id >0) {
photos_mc["photo"+(i-1)+"_mc"].removeEventListener(this);
}
//此容器開始載入相片
this.loadClip(this.file, this.loadImg_mc);
};
photo_mc.loadClip = function(file:String, target_mc:MovieClip) {
//位置
this._x = Math.floor(this.id/_global.COUNT_PHOTOS_COL)
*(_global.T_PHOTO_SIZE+_global.T_PHOTO_OFFSET);
this._y = Math.floor(this.id%_global.COUNT_PHOTOS_COL)
*(_global.T_PHOTO_SIZE+_global.T_PHOTO_OFFSET);
//載入
target_mc.loadMovie(file);
//訊息
this.createTextField("progress_txt"
, this.getNextHighestDepth()
, 0, 0, 10, 5);
this.progress_txt.autoSize = true;
this.progress_txt.text = "0%";
//不斷檢查
this.onEnterFrame = function() {
//載入進度
var loadedBytes:Number = this.loadImg_mc.getBytesLoaded();
var totalBytes:Number = this.loadImg_mc.getBytesTotal();
var p = Math.round((loadedBytes/totalBytes)*100);
this.progress_txt.text = p+"%";
if (totalBytes >0 && loadedBytes == totalBytes) {
//移除訊息
this.progress_txt.removeTextField();
//大小
var p = _global.T_PHOTO_SIZE
/(this._width >this._height
? this._width : this._height);
this._width *= p;
this._height *= p;
//點選效果
this.onRelease = function() {
getURL(this.file, "_blank");
};
//當這個容器載入相片完成,送出一個 photoLoaded 事件
this.dispatchEvent({target:this, type:"photoLoaded"});
//移除onEnterFrame
this.onEnterFrame = null;
}
};
};
if (i >0) {
//上一個 mc 以這一個 mc 當作事件監聽者
photos_mc["photo"+(i-1)+"_mc"].addEventListener("photoLoaded", photo_mc);
}
}
//開始載入
photos_mc.photo0_mc.loadClip(photos_mc.photo0_mc.file, photos_mc.photo0_mc.loadImg_mc);
|
若是你之前看我的 連續載入2 就已經可以看到載入進度的文字訊息的話,請讓我知道,我才能推測到底是哪裡的問題。或是您也碰過這種情況,而知道問題原因的話,還請您不吝分享您的經驗,蟹蟹。


