來自:http://www.healdream.com/blog/article.asp?id=150
查看效果:Flash動畫線上播放
更新了源檔案,希望能給大家帶來協助:)
本以為網上這樣的教程多的是,隨便一抓就是一大把,結果不甚理想,不過也看到了一些有用的文章。
還是自己動手豐衣足食吧,我們知道MovieClipLoader載入單圖,還是比較簡單的,但如果是多圖呢,如何建立監聽?如何在一副圖片載入完後load下一張圖片?如何與XML結合?
讓我們一個一個來,首先是監聽的問題,這麼多圖,不能建立n個object,然後分別對這幾個object監聽,效率太低,所以只能建立一個監聽,餘下的任務就是如何?多圖載入了。
基本思路:
先給id賦值1,然後通過判斷id與總圖片數的大小,來決定是否載入下一張圖片就像這樣: 程式碼myObj.onLoadComplete = function() {
if (id<=nums) {//一個圖片載入完成後,判斷id與nums的值,如果小於nums繼續載入
id++;
loadpic(id);
}
};
然後在loadpic(id)函數裡執行 程式碼myCL.loadClip(imgurl, loadpic_mc);
就可以繼續載入了。
最後是與XML結合的問題,其實也滿簡單的,當載入完外部xml時,執行相應的函數就行了,就像這樣: 程式碼myXML.onLoad = function(suc) {
if (suc) {
loadStart();//載入完成後執行loadStart函數
}
};
基本思路就是這樣,貼上源碼: 程式碼var id = 1;
var myXML:XML = new XML();
myXML.ignoreWhite = true;
myXML.load("list.xml");//載入xml
myXML.onLoad = function(suc) {
if (suc) {
loadStart();//載入完成後執行loadStart函數
}
};
var myObj:Object = new Object();
myObj.onLoadComplete = function() {
if (id<=nums) {//一個圖片載入完成後,判斷id與nums的值,如果小於nums繼續載入
id++;
loadpic(id);
}
};
myObj.onLoadInit = function(tar) {//載入完成後,設定圖片大小
tar._width = 85;
tar._height = 53;
tid = id-1;
//將loading和灰色背景設為不可見,並給按鈕加上事件
//這裡有個小技巧就是將tid賦予_btn.pid;方便將來調用
_root["loader"+tid+"_mc"].loading_mc._visible = false;
_root["loader"+tid+"_mc"].bg1_mc._visible = false;
_root["loader"+tid+"_mc"]._btn.pid = tid;
_root["loader"+tid+"_mc"]._btn.onRelease = function() {
ttid = this.pid;
url = myList[ttid].childNodes[0];//取得xml檔案對應的url
getURL(url);
};
};
var myCL:MovieClipLoader = new MovieClipLoader();
function loadStart() {
myList = myXML.firstChild.childNodes;
nums = myList.length;//得到圖片數
for (var i = 1; i<=nums; i++) {//複製庫裡的mc,並將其置於舞台上,分配好各自的座標
_root.attachMovie("bg_loader", "loader"+i+"_mc", 100+i);
_root["loader"+i+"_mc"]._x = (i%5 == 0) ? 450 : (10*(i%5)+100*(i%5-1));
ty=i%5 == 0 ? (Math.floor(i/5-1)*80) : (Math.floor(i/5)*80);
_root["loader"+i+"_mc"]._y = 10+ty
}
myCL.addListener(myObj);//設定監聽
myCL.loadClip("imgs/small01.jpg", _root.loader1_mc.loadpic_mc);//載入第一副圖片
}
function loadpic(id) {
//取得xml檔案裡相應的圖片地址
imgurl = myList[id-1].attributes.path;
myCL.loadClip(imgurl, _root["loader"+id+"_mc"].loadpic_mc);
}
看看效果