剛開始學習flash的人對flash中的進度條都充滿了好奇,經(jīng)常有人問 進度條怎么編寫的問題。
在這里,我對進度條的編寫作了一些總結(jié),希望對有需求的朋友有所幫助,特別是那些初學者,希望他們在讀完這篇文章后有所收獲。當然,對那些高手來說未必沒有一點用處,也許會有些意外收獲喲。
注意:具體問題具體分析,并不保證所有情況下都適用
言歸正傳,從最簡單的開始
所謂最簡單的其實就是擺放那里的一個假的進度條,你可以作一個mc后者直接在貞里畫,把它放在動畫的最前面就行了,哈哈沒想到吧,其實這種方法在早期swf文件比較小的情況下,確實是個不錯的選擇,但隨著flash技術(shù)的發(fā)展,以及swf文件體積的大增,這種方法基本上已經(jīng)被棄用。這里就當是一個小插曲讓大家放松一下,其實做進度條沒什么難的,接下來我們正是開始用as編寫進度條。
首先我們來學習一下單一flash文件內(nèi)部加載進度條的制作:
0,將要加載進度條的文件打開
1,將所有放置元件的的層在時間軸上的貞,向后移兩貞(當然如果你沒有做其他的動畫,就直接插入兩個關(guān)鍵貞就完了)
2,在第一貞處放置進度條元件,在這里我們是用一個名為preloader的mc(一個長方形的元件,記住注冊點在左,或左上角)
3,在第一貞處添加代碼
var amountLoaded:Number = _root.getBytesLoaded()/_root.getBytesTotal();
prelaoder._xscale = amountLoaded*100;//進度條的寬度
//當然你也可以在這里加一些動態(tài)文本之類的標示白分別什么的,在此不再贅述
4,在第二貞處加如下代碼
if(_root.getBytesLoaded() == _root.getBytesTotal()){
gotoAndPlay(3);//播放結(jié)束,繼續(xù)后面動畫
}else{
gotoAndPlay(1);//播放未結(jié)束,繼續(xù)回第一貞
}
到此,第一種用代碼加載進度條的方法就完成了,很簡單吧。
第一種方法這么簡單,為什么還要繼續(xù)說別的方法呢這里我們就要說到上一種方法的缺點了
問題出現(xiàn)了:如果在舞臺上添加了組件或其他延展類(具體問題具體分析),前面的方法將不起作用。
解決辦法:將組件連接屬性中的第一貞導出取消,發(fā)布選項中選導出從第2貞,將組件放在第二貞(或有命名的貞)
并在第二貞加上stop();(注意 本文沒有特別說明是所有腳本都是寫在單獨的as層,即寫在貞上);
在第一貞加代碼,
this.onEnterFrame = function(){
var amount:Number = this.getBytesLoaded()/this.getBytesTotal()*100;
preloader._xscale = amount;
}
if(amount == 100){
this.gotoAndPlay(2);//如果是命名的貞,則改成此貞
delete this.onEnterFrame;
}