近日在做一個(gè)flash的時(shí)候,發(fā)現(xiàn)了一個(gè)非常奇怪的問題,就是loading的進(jìn)度條是從64%開始的,而且進(jìn)度條出現(xiàn)之前,一片空白,但是上傳到空間之后,卻發(fā)現(xiàn)loding完全失效,望各位help一下,我琢磨了2個(gè)多小時(shí),頭都快大了.以下是前兩幀的代碼
第一幀:
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("場(chǎng)景 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幀時(shí)停止播放;
2 在根路徑也就是_root的位置建立一個(gè)影片剪輯,它的名稱為L(zhǎng)oading_mc,它的層深為根路徑中現(xiàn)在沒有使用的的第一個(gè)層深。
3 Loading_mc影片剪輯填充為0x5f6165色;
4~8 將它移動(dòng)到X:0,Y:10的位置開始繪制,坐標(biāo)為0~350,高度為10;
9 它的X坐標(biāo)等于200;
10 它的Y坐標(biāo)等于300;
11 在根路徑建立一個(gè)文本字段,它的名稱為L(zhǎng)oading_txt,它的層深為根路徑?jīng)]有使用的最后一個(gè)層深,它的X坐標(biāo)為200,Y坐標(biāo)為370,寬度為30,高度為20;
12 它的邊框?qū)傩詁order為假,也就是它沒有邊框;
13 它可以是多行文本;
14 它可以自動(dòng)換行;
15 當(dāng)Loading_mc影片剪輯開始播放時(shí),每播放一幀,執(zhí)行一次以下代碼;
16 當(dāng)根路徑已經(jīng)加載的字節(jié),超過或者等于它的總字節(jié)時(shí);
17 根路徑開始播放;
18 并且刪去Loading_mc這個(gè)影片剪輯;
19 刪去Loading_txt這個(gè)字段;
20 如果條件不成立的話;
21 Loading_mc影片剪輯的寬度縮放比例,等于根路徑的已下載字節(jié)除以根路徑的總字節(jié)的值,乘以100;
22 Loading_txt字段的文字內(nèi)容,等于對(duì)寬度縮放比例的值,取整之后,再轉(zhuǎn)換為字符類型,然后加上“%”百分號(hào);
23 而它的坐標(biāo)等于Loading_mc影片剪輯的寬度加上200。
非常感謝愛老虎油的解答,但是我想我的問題可能有點(diǎn)不一樣,因?yàn)?即使我在第一幀里加入如下兩行
trace("loaded");
stop();
也是過一段滿長(zhǎng)的時(shí)間,才顯示loaded,并且進(jìn)度條停在了64%處,
我想是不是影片加載到64%的時(shí)候才開始執(zhí)行我的代碼,我把代碼放在場(chǎng)景1,主影片放在場(chǎng)景2
也許我說的不對(duì),僅供參考.
其一,我不知道你用什么版本,但是你的變量沒有指定數(shù)據(jù)類型.
其二,第一幀里檢查一下,有什么大東西沒有.不要放在第1幀.
其三,_root.load_bar._xscale = per;這句說明per是數(shù)值型,但是.loadper = per+"%"未轉(zhuǎn)換數(shù)據(jù)類型進(jìn)行操作.
其四,_root.getBytesLoaded();表示什么?本場(chǎng)景的字節(jié)嗎?如果想全局的話用_global好不.
其五,gotoAndPlay("場(chǎng)景 1",1);使用漢字做場(chǎng)景名稱的話,并不是程序推薦的作法.
其六,Math.round()是什么意思?四舍五入嗎?不準(zhǔn)確吧,換int吧.
總結(jié):其它都是小問題,_root換成_global,可能是主要的問題所在,