關於loading的一些技巧_Flash As

來源:互聯網
上載者:User
近日在做一個flash的時候,發現了一個非常奇怪的問題,就是loading的進度條是從64%開始的,而且進度條出現之前,一片空白,但是上傳到空間之後,卻發現loding完全失效,望各位help一下,我琢磨了2個多小時,頭都快大了.以下是前兩幀的代碼
第一幀:
totalB = _root.getBytesTotal();
loaded = _root.getBytesLoaded();
trace(loaded);
per = Math.round(loaded/totalB*100);
trace(per);
_root.load_bar._xscale = per;
loadper = per+"%";
第二幀:
if(loaded>=totalB){
       gotoAndPlay("情境 1",1);
}
else{
gotoAndPlay(1);
}
先謝過了!

stop()
_root.createEmptyMovieClip("Loading_mc",_root.getNextHighestDepth())
Loading_mc.beginFill(0x5f6165)
Loading_mc.moveTo( 0, 10 );
Loading_mc.lineTo( 0, 0 ); 
Loading_mc.lineTo( 350, 0 );
Loading_mc.lineTo( 350, 10 );
Loading_mc.lineTo( 0, 10 );
Loading_mc._x=200
Loading_mc._y=350
_root.createTextField("Loading_txt",_root.getNextHighestDepth(),200,370,30,20)
Loading_txt.border=false
Loading_txt.multiline = true;
Loading_txt.wordWrap = true;
Loading_mc.onEnterFrame=function(){
       if(_root.getBytesLoaded()>=_root.getBytesTotal()){
       _root.play()
       _root.Loading_mc.removeMovieClip()
       _root.Loading_txt.removeTextField()
       }else{
              _root.Loading_mc._xscale=(_root.getBytesLoaded()/_root.getBytesTotal())*100
              _root.Loading_txt.text=int(Loading_mc._xscale).toString()+"%"
              _root.Loading_txt._x=Loading_mc._width+200
       }
}


放到第1幀就OK了.

代碼解讀:
1  讓影片在第1幀時停止播放;
2  在根路徑也就是_root的位置建立一個影片剪輯,它的名稱為Loading_mc,它的層深為根路徑中現在沒有使用的的第一個層深。
3       Loading_mc影片剪輯填充為0x5f6165色;
4~8  將它移動到X:0,Y:10的位置開始繪製,座標為0~350,高度為10;
9       它的X座標等於200;
10       它的Y座標等於300;
11       在根路徑建立一個文字欄位,它的名稱為Loading_txt,它的層深為根路徑沒有使用的最後一個層深,它的X座標為200,Y座標為370,寬度為30,高度為20;
12       它的邊框屬性border為假,也就是它沒有邊框;
13       它可以是多行文本;
14       它可以自動換行;
15       當Loading_mc影片剪輯開始播放時,每播放一幀,執行一次以下代碼;
16       當根路徑已經載入的位元組,超過或者等於它的總位元組時;
17       根路徑開始播放;
18       並且刪去Loading_mc這個影片剪輯;
19       刪去Loading_txt這個欄位;
20       如果條件不成立的話;
21       Loading_mc影片剪輯的寬度縮放比例,等於根路徑的已下載位元組除以根路徑的總位元組的值,乘以100;
22       Loading_txt欄位的文字內容,等於對寬度縮放比例的值,取整之後,再轉換為字元類型,然後加上“%”百分比符號;
23       而它的座標等於Loading_mc影片剪輯的寬度加上200。

非常感謝愛老虎油的解答,但是我想我的問題可能有點不一樣,因為,即使我在第一幀裡加入如下兩行
trace("loaded");
stop();
也是過一段滿長的時間,才顯示loaded,並且進度條停在了64%處,
我想是不是影片載入到64%的時候才開始執行My Code,我把代碼放在情境1,主影片放在情境2

也許我說的不對,僅供參考.
其一,我不知道你用什麼版本,但是你的變數沒有指定資料類型.
其二,第一幀裡檢查一下,有什麼大東西沒有.不要放在第1幀.
其三,_root.load_bar._xscale = per;這句說明per是數值型,但是.loadper = per+"%"未轉換資料類型進行操作.
其四,_root.getBytesLoaded();表示什麼?本情境的位元組嗎?如果想全域的話用_global好不.
其五,gotoAndPlay("情境 1",1);使用漢字做情境名稱的話,並不是程式推薦的作法.
其六,Math.round()是什麼意思?四捨五入嗎?不準確吧,換int吧.


總結:其它都是小問題,_root換成_global,可能是主要的問題所在,

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.