华南俳烁实业有限公司

考試首頁(yè) | 考試用書(shū) | 培訓(xùn)課程 | 模擬考場(chǎng) | 考試論壇  
  當(dāng)前位置:設(shè)計(jì)制作 > Flash > 文章內(nèi)容
  

FLASH教程:FLASH制作一個(gè)完整的loading

 [ 2017年8月8日 ] 【

  

flash制作一個(gè)完整的loading

  loading這個(gè)東西,說(shuō)穿了其實(shí)是給用戶反饋的一種表現(xiàn)形式,在客戶端中的loading,通常以鼠標(biāo)的手型變化來(lái)表現(xiàn);而在web端,loading的創(chuàng)意則層出不窮了,而且給用戶的反饋更好。本文將主要闡述在flash中制作loading的一些問(wèn)題。

  先來(lái)看看loading的原理。在flash中,制作loading的目的是為了預(yù)先加載一部分內(nèi)容(你可以選擇全部加載完畢,或者加載一部分之后),然后再把flash的主要內(nèi)容展示出來(lái)。一般來(lái)講,loading是放在第一幀上面的(也可以不放在第一幀,比如放在任意一幀,但是在第一幀你要做個(gè)跳轉(zhuǎn),讓播放頭到loading的那一幀去)。這里要注意一個(gè)問(wèn)題,如果你的flash程序有從元件庫(kù)里導(dǎo)出元件的話(默認(rèn)為第一幀導(dǎo)出),要導(dǎo)出的原件全部加載完畢之后才會(huì)顯示第一幀的內(nèi)容(即,你的loading)。這樣的話很可能你在第一幀導(dǎo)出的內(nèi)容過(guò)于龐大,占據(jù)了整個(gè)flash應(yīng)用的很大一部分,比如50%,那么我們實(shí)際運(yùn)行的效果就是在一段空白之后loading從50%處開(kāi)始顯示。

  要避免上面的問(wèn)題(一個(gè)明顯的不好的用戶體驗(yàn)),通常來(lái)講我會(huì)用到兩種方法:

  第一,把要導(dǎo)出的元件取消導(dǎo)出,把它們集中放在某一幀(除開(kāi)你做loading的那一幀),然后在放元件的這一幀之后的那一幀開(kāi)始運(yùn)行你的程序。

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

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

  ......

  this. loaderInfo. addEventListener (SPANrogressEvent. SPANROGRESS,loadSPANrogress );

  this. loaderInfo. addEventListener (Event. COMSPANLETE,loadComSPANlete );

  ......

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

  ......

  SPANrivate functionLoadSPANrogress ( e:SPANrogressEvent )

  {

  var loaded:uint= e. bytesLoaded;

  vartotal:uint= e. bytesTotal;

  varSPANercent: Number= int ( ( loaded /total ) * 100 );

  trace (SPANercent+ "%" );

  }

  ......

  上面的代碼輸出正在載入內(nèi)容的百分比,這是一種最簡(jiǎn)單的反饋,但是你可以在這段代碼里豐富你的loading的內(nèi)容,使其更具有趣味性,以使得用戶在等待下載的時(shí)候能清楚的知道下載的進(jìn)度,或者在這時(shí)候觀賞一段精美的動(dòng)畫(huà)——這完全取決于你的設(shè)計(jì)。這時(shí)候加載完成了,可以執(zhí)行l(wèi)oadComplete這個(gè)方法了。在loadComplete方法里添加你想要的動(dòng)作,比如給用戶一個(gè)播放按鈕以使得用戶可以自主選擇,或者直接進(jìn)入某一幀進(jìn)行播放。

  前面說(shuō)過(guò),直接在swf上添加loading可能會(huì)導(dǎo)致loading不是從1%開(kāi)始,這時(shí)候可以用一個(gè)swf加載另一個(gè)swf的方法來(lái)實(shí)現(xiàn)完整的loading,比如,我想在B.swf里加載A.swf,那么在B.swf的程序里使用loader加載A.swf。需要注意的是,監(jiān)聽(tīng)loader的加載進(jìn)度需要使用loader的contentLoaderInfo屬性,而不是loaderInfo。關(guān)于loaderInfo和contentLoaderInfo的關(guān)系如下圖所示:

  

flash制作一個(gè)完整的loading

  由于B.swf只起到加載A.swf的作用,并沒(méi)有其他顯示內(nèi)容,所以它本身的加載可以忽略不計(jì),這種方法可以比較完整的展示A.swf的加載過(guò)程。但是,同時(shí)使用這種方法也引發(fā)了一些問(wèn)題,比如你在A.swf里與web端進(jìn)行通信,使用了loaderInfo的parameters屬性,則你在用B.swf加載A.swf后,通信將失效。這是因?yàn)镕lashVars HTML 參數(shù)只影響主swf(例子里為B.swf),就是說(shuō)你可以在B.swf里完成通信,但是A.swf不行。所以,我們可以先在B.swf中獲取到頁(yè)面要傳遞的信息,然后再讓A.swf從B.swf中獲取這個(gè)信息就可以了。通常我是這樣處理的,假如B.swf的文檔類(lèi)為Main.as,那么在Main.as中定義一個(gè)static的屬性比如prama(public static var prama),用來(lái)保存?zhèn)鬟f的信息,然后再在A.swf中通過(guò)Main.prama獲取這個(gè)信息。這樣就間接實(shí)現(xiàn)了A.swf與web端的通信。

  綜上所述,本文不是向大家介紹如何制作一個(gè)完整的loading的,相信loading的例子在網(wǎng)上并不少見(jiàn),但是只有明白了loading制作的基本原理,才能從根本上制作出更為規(guī)范和友好的loading來(lái)。

本文糾錯(cuò)】【告訴好友】【打印此文】【返回頂部
將考試網(wǎng)添加到收藏夾 | 每次上網(wǎng)自動(dòng)訪問(wèn)考試網(wǎng) | 復(fù)制本頁(yè)地址,傳給QQ/MSN上的好友 | 申請(qǐng)鏈接 | 意見(jiàn)留言 TOP
關(guān)于本站  網(wǎng)站聲明  廣告服務(wù)  聯(lián)系方式  站內(nèi)導(dǎo)航  考試論壇
Copyright © 2007-2013 中華考試網(wǎng)(Examw.com) All Rights Reserved
新泰市| 泾阳县| 天柱县| 大余县| 潮安县| 通道| 酉阳| 呼图壁县| 乌鲁木齐县| 武胜县| 武穴市| 临朐县| 彩票| 玉田县| 贺州市| 客服| 霞浦县| 沈阳市| 宜州市| 廊坊市| 武平县| 台山市| 蒙山县| 丽江市| 榆中县| 额济纳旗| 贡嘎县| 安化县| 增城市| 四川省| 武乡县| 聂拉木县| 南丰县| 定兴县| 闵行区| 岐山县| 大港区| 莱州市| 文登市| 若尔盖县| 思茅市|