標(biāo)準(zhǔn)的loading制作方法_Flash教程

      編輯Tag賺U幣
      教程Tag:暫無(wú)Tag,歡迎添加,賺取U幣!

      推薦:Flash電子書(shū)鼠標(biāo)拖拽翻頁(yè)效果原理
      最近要做些電子書(shū),本來(lái)預(yù)備去網(wǎng)上買(mǎi)現(xiàn)成的翻頁(yè)效果的組件,但一看報(bào)價(jià)嚇一跳,而且執(zhí)行效率也不高,一個(gè)叫AsFlipPage4.0的組件CPU占用率高居70%,喊價(jià)1000RMB,

      前言:網(wǎng)絡(luò)中的swf影片是可以實(shí)現(xiàn)邊下載邊播放的,由于受到當(dāng)前網(wǎng)絡(luò)傳輸?shù)闹萍s,對(duì)于大容量的影片,這種實(shí)時(shí)播放并不理想。為避免受眾尷尬的等待,flash制作人員往往設(shè)計(jì)一個(gè)加載(loading)的畫(huà)面,等影片的全部字節(jié)下載到本地后再播放,從而保證影片的播放質(zhì)量.本文將介紹一種較為標(biāo)準(zhǔn)的loading制作方法。

      步驟:
      1.打開(kāi)Flash MX 2004,選擇矩形工具,在主場(chǎng)景中畫(huà)出下一個(gè)只有邊框有矩形,本例該矩形大小為350*16像素。
      2.再在主場(chǎng)景中仍用矩形工具畫(huà)出一個(gè)只有填充而無(wú)邊框的矩形,并按F8鍵將其轉(zhuǎn)換為影片剪輯(注:其注冊(cè)點(diǎn)一定要選在該矩形的最左側(cè)),其實(shí)例名為bar 。本例該矩形大小為345*11像素。
      3.將上述兩矩形在主場(chǎng)景中排列好,使邊框矩形嵌套填充矩形。
      4.在上述兩矩形旁邊用文字工具拖出一動(dòng)態(tài)文本框,其變量名為bar_per。

      至此,預(yù)備工作就緒,即建立了兩矩形框和一動(dòng)態(tài)文本框,下面預(yù)備編寫(xiě)代碼。

      5.在主場(chǎng)景中,新建一層,選中該層第1幀,按F9鍵打開(kāi)動(dòng)作腳本編輯窗口,輸入以下代碼:
      順應(yīng)熱潮,Macromedia公司也開(kāi)發(fā)了在手機(jī)上應(yīng)用的Flash動(dòng)畫(huà)播放器:Flash Lite 1.1。最初這個(gè)播放器只能應(yīng)用于i-mode手持設(shè)備,后來(lái)索愛(ài)、諾基亞品牌的一些手機(jī)也能使用這個(gè)播放器了。在今年市面上已經(jīng)可以看到捆綁了Flash Lite 1.1的手機(jī),尤其是三星手機(jī)和Macromedia達(dá)成了合作協(xié)議,全面支持Flash Lite 1.1。

      this.onLoad=function(){
      myBytesTotal=_root.getBytesTotal();
      }
      this.onLoad();
      this.onEnterFrame=function(){
      myBytesLoaded=_root.getBytesLoaded();
      bar_xscale=myBytesLoaded/myBytesTotal*100;
      percent=Math.round(bar_xscale);
      this.bar._xscale=bar_xscale;
      this.bar_per=percent "%";
      if(myBytesLoaded==myBytesTotal){
      delete this.onEnterFrame;
      _root.nextFrame();
      }else{
      this.stop();
      }
      }
      6.從主場(chǎng)景時(shí)間軸第2幀起制作你的flash影片。

      注解:


      this.onLoad=function(){
      myBytesTotal=_root.getBytesTotal();
      }
      此段代碼是指,當(dāng)影片剪輯(本例指兩矩形和一動(dòng)態(tài)文本框所存在的主場(chǎng)景)加載時(shí),讀取主時(shí)間軸存在的所有元素的總字節(jié)數(shù)并賦值給變量myBytesTotal。


      this.onLoad();
      flash事件處理函數(shù)MovieClip.onLoad=function(){…}有些希奇,其中設(shè)置的代碼,若不在后面加上this.onLoad();,這些代碼并不能執(zhí)行,因此加上這一句以便這些代碼得以執(zhí)行。


      myBytesLoaded=_root.getBytesLoaded();//讀取主時(shí)間軸存在的所有元素已加載的字節(jié)數(shù),并將其賦值給變量myBytesLoaded。


      bar_xscale=myBytesLoaded/myBytesTotal*100;//將myBytesTotal折算成100時(shí),myBytesLoaded所得到的折算值賦給變量bar_xscale,以便給主場(chǎng)景中bar的_xscale賦值(_xscale的最大值只能為100),這里用到了初等數(shù)學(xué)的比例計(jì)算。


      percent=Math.round(bar_xscale);//將變量bar_xscale的值取整后賦給變量percent,以便顯示的百分比不帶小數(shù)。

      拓展:
      1.“下載速度”的代碼設(shè)計(jì)
      ①在主場(chǎng)景中用文字工具拖出有適當(dāng)寬度的動(dòng)態(tài)文本框,并設(shè)其變量名為rate 。
      ②在主場(chǎng)景代碼層第1幀this.onEnterFrame=function(){}代碼體if語(yǔ)句前追加如下代碼:

      t=getTimer();
      rate= "下載速度:" Math.round(myBytesLoaded/t * 100)/100
      " K/s";
      2.“已用時(shí)間和剩余時(shí)間”的代碼設(shè)計(jì)
      ①在主場(chǎng)景中用文字工具拖出有適當(dāng)寬度的動(dòng)態(tài)文本框,并設(shè)其變量名為mytimes 。
      ②在主場(chǎng)景代碼層第1幀this.onEnterFrame=function(){}代碼體if語(yǔ)句前追加如下代碼:

      timeLoaded=Math.round(t/1000);
      timeRemain=Math.round(timeLoaded*(myBytesTotal-myBytesLoaded)/myBytesLoaded);

      timeRemain=Math.round(timeRemain/60) ":" Math.round(timeRemain`);

      timeLoaded=Math.round(timeLoaded/60) ":" Math.round(timeLoaded`);

      mytimes="已用時(shí)間" timeLoaded " " "剩余時(shí)間" timeRemain;

      注:若“下載速度”的代碼沒(méi)有設(shè)計(jì),則上述代碼前應(yīng)追加代碼 t=getTimer();
      拓展后主場(chǎng)景代碼層第1幀的全部代碼如下:

      this.onLoad=function(){
      myBytesTotal=_root.getBytesTotal();
      }
      this.onLoad();
      this.onEnterFrame=function(){
      myBytesLoaded=_root.getBytesLoaded();
      bar_xscale=myBytesLoaded/myBytesTotal*100;
      percent=Math.round(bar_xscale);
      this.bar._xscale=bar_xscale;
      this.bar_per=percent "%";
      t=getTimer();
      rate= "下載速度:" Math.round(myBytesLoaded/t * 100)/100
      " K/s";
      timeLoaded=Math.round(t/1000);
      timeRemain=Math.round(timeLoaded*(myBytesTotal-myBytesLoaded)/myBytesLoaded);

      timeRemain=Math.round(timeRemain/60) ":" Math.round(timeRemain`);

      timeLoaded=Math.round(timeLoaded/60) ":" Math.round(timeLoaded`);

      mytimes="已用時(shí)間" timeLoaded " " "剩余時(shí)間" timeRemain;

      if(myBytesLoaded==myBytesTotal){
      delete this.onEnterFrame;
      _root.nextFrame();
      }else{
      this.stop();
      }
      }

      分享:制作無(wú)限級(jí)菜單
      原來(lái)是三級(jí)菜單,寫(xiě)書(shū)時(shí)想把它做為例子(第5章的第4個(gè)例子中),于是用遞歸改成無(wú)限級(jí)的首先得預(yù)備xml文件部分載圖圖片如下:核心代碼:functionaddMenu(m

      來(lái)源:設(shè)計(jì)前沿收集整理//所屬分類(lèi):Flash教程/更新時(shí)間:2008-03-05
      相關(guān)Flash教程