关于loading的一些技巧                
                
                    所属分类:
                        网页制作 / Flash                    
                    阅读数:
                        1881
                    
                        收藏 0赞 0分享
                    
                 
                
                    近日在做一个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%的时候才开始执行我的代码,我把代码放在场景1,主影片放在场景2 
也许我说的不对,仅供参考. 
其一,我不知道你用什么版本,但是你的变量没有指定数据类型. 
其二,第一帧里检查一下,有什么大东西没有.不要放在第1帧. 
其三,_root.load_bar._xscale = per;这句说明per是数值型,但是.loadper = per+"%"未转换数据类型进行操作. 
其四,_root.getBytesLoaded();表示什么?本场景的字节吗?如果想全局的话用_global好不. 
其五,gotoAndPlay("场景 1",1);使用汉字做场景名称的话,并不是程序推荐的作法. 
其六,Math.round()是什么意思?四舍五入吗?不准确吧,换int吧. 
总结:其它都是小问题,_root换成_global,可能是主要的问题所在,