當(dāng)前位置:軟件學(xué)堂 > 資訊首頁(yè) > 網(wǎng)絡(luò)編程 > Flash > 如何制作flash的加載動(dòng)畫(huà)

如何制作flash的加載動(dòng)畫(huà)

2021/9/11 15:24:36作者:佚名來(lái)源:網(wǎng)絡(luò)

移動(dòng)端
Adobe Flash CS4綠色版V10.0簡(jiǎn)體中文版

大小:509MB語(yǔ)言:

類型:動(dòng)畫(huà)制作等級(jí):

一個(gè)FLASH動(dòng)畫(huà),如果非常大,估計(jì)下載會(huì)一段時(shí)間,這樣就可能在播放時(shí)一邊播放一邊下載,為了解決這種問(wèn)題,通問(wèn)會(huì)做一個(gè)加載片頭,一旦加載完才開(kāi)始播放,這就是我們通常所說(shuō)的loading,今天就來(lái)講講關(guān)于制作loading的基本原理,讓你真正明白制作loading的前前后后。
先來(lái)看看loading的原理。在flash中,制作loading的目的是為了預(yù)先加載一部分內(nèi)容(你可以選擇全部加載完畢,或者加載一部分之后),然后再把flash的主要內(nèi)容展示出來(lái)。一般來(lái)講,loading是放在flash動(dòng)畫(huà)時(shí)間線的第一幀上面,當(dāng)然也是可以不放在第一幀,比如放在任意一幀,但是你第一幀就得做一個(gè)跳轉(zhuǎn),總之就是一開(kāi)始就播放這loading這處小動(dòng)畫(huà),在做flash的loading時(shí)要稍注意以下的問(wèn)題:
第一,把要導(dǎo)出的元件取消導(dǎo)出,把它們集中放在某一幀(除開(kāi)你做loading的那一幀),然后在放元件的這一幀之后的那一幀開(kāi)始運(yùn)行你的程序。
如何制作flash的加載動(dòng)畫(huà)

第二,用另個(gè)一個(gè)swf來(lái)加載需要做loading的swf。這種方法可以有比較完整的加載進(jìn)度條以及百分比文字,缺點(diǎn)是容易引起其他問(wèn)題,這個(gè)后面會(huì)討論。

舉個(gè)例子來(lái)說(shuō),我想為A2.SWF做一個(gè)loading,關(guān)鍵代碼如下:

......
this.loaderInfo.addEventListener(ProgressEvent.PROGRESS ,loadProgress);
this.loaderInfo.addEventListener(Event.COMPLETE ,loadComplete);
......
AS3.0中增加了一個(gè)新的loaderInfo類來(lái)提供已加載的swf、圖像文件的信息。flashplayer通過(guò)調(diào)度ProgressEvent對(duì)象的loadProgress方法來(lái)實(shí)現(xiàn)對(duì)加載內(nèi)容反饋,當(dāng)加載完成后,flashplayer再調(diào)度Event對(duì)象的loadComple方法。loadProgress方法是定義加載進(jìn)度的方法,所有有關(guān)加載的信息都可以在這個(gè)方法中加以反饋:

......
private function LoadProgress(e:ProgressEvent)
{
    var loaded:uint=e.bytesLoaded;
    var total:uint=e.bytesTotal;
    var percent:Number=int((loaded/total)*100);
    trace(percent+"%");
}
......
上面的代碼輸出正在載入內(nèi)容的百分比,你完全可以在這段代碼中加入你自己的元素來(lái)豐富你的loading的內(nèi)容,從而使得用戶在等待過(guò)程中能夠清楚的知道下載的進(jìn)度,這樣我們就有必要制作一個(gè)精美的小動(dòng)畫(huà)了。當(dāng)加載完成后,就可以執(zhí)行l(wèi)oadComplete這個(gè)方法。在loadComplete方法里添加你想要的動(dòng)作,常常大家會(huì)放一個(gè)播放的按鈕,讓用戶通過(guò)按這個(gè)按鈕進(jìn)入真正的動(dòng)畫(huà)。
這里我們要注意,直接在swf上添加loading可能會(huì)導(dǎo)致loading不是從1%開(kāi)始,我們可以用一個(gè)swf加載另一個(gè)swf的方法來(lái)實(shí)現(xiàn)完整的loading,比如,我想在A1.swf里加載A2.swf,那么在A1.swf的動(dòng)畫(huà)程序中使用loader加載A2.swf。值得注意的是,監(jiān)聽(tīng)loader的加載進(jìn)度需要使用loader的contentLoaderInfo屬性,而不是loaderInfo。
由于A1.SWF只起到加載A2.SWF的作用,并沒(méi)有其他顯示內(nèi)容,所以它本身的加載可以忽略不計(jì),這種方法可以比較完整的展示A2.SWF的加載過(guò)程。但是,同時(shí)使用這種方法也引發(fā)了一些問(wèn)題,比如你在A2.SWF里與web端進(jìn)行通信,使用了loaderInfo的parameters屬性,則你在用A1.SWF加載A2.SWF后,通信將失效。這是因?yàn)镕lashVars HTML 參數(shù)只影響主swf(例子里為A1.SWF),就是說(shuō)你可以在A1.SWF里完成通信,但是A2.SWF不行。所以,我們可以先在A1.SWF中獲取到頁(yè)面要傳遞的信息,然后再讓A2.SWF從A1.SWF中獲取這個(gè)信息就可以了。通常我是這樣處理的,假如A1.SWF的文檔類為Main.as,那么在Main.as中定義一個(gè)static的屬性比如prama(public static var prama),用來(lái)保存?zhèn)鬟f的信息,然后再在A2.SWF中通過(guò)Main.prama獲取這個(gè)信息。這樣就間接實(shí)現(xiàn)了A2.SWF與web端的通信。

好了,今天主要是給大家介紹loading制作的基本原理,至于詳細(xì)的loading你可以在網(wǎng)上找到很多,這里就不給大家講了。

 

標(biāo)簽: 加載  動(dòng)畫(huà)