关于loading的一些技巧
2007-03-22 00:00
295 查看
近日在做一个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,可能是主要的问题所在,
第一帧:
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,可能是主要的问题所在,
相关文章推荐
- 关于STM32的一些开发技巧
- 关于CAShapeLayer的一些实用案例和技巧
- 关于PADS的一些概念和实用技巧(二)
- 关于idea的一些操作技巧
- 关于css一些技巧(原:http://hi.baidu.com/%CC%C6%D0%F1/blog/item/eac3594376d36e149213c647.html)
- 一些关于网页制作的特效和技巧
- 关于网页分析一些技巧
- AutoCAD关于"选择"的一些技巧(如何高效地框选)
- 关于css的一些技巧
- JavaScript关于表单脚本的一些实用技巧
- 关于VS2010的一些使用技巧
- 关于 WEB/HTTP 调试利器 Fiddler 的一些技巧分享
- 关于代码阅读的编程实现技巧及自己工作学习的一些经验(推荐看后面的后记)
- 关于javascript运行时的一些实用技巧
- 关于使用axios的一些心得技巧分享
- sqlserver中关于text/ntext列的一些处理技巧
- 服务器端编程心得(六)—— 关于网络编程的一些实用技巧和细节
- 关于如何写UI及屏幕适配的一些技巧(上)——颜婧
- java 关于使用java1.8的localDateTime日期操作的基本使用以及一些使用技巧 持续更新...
- 关于图片转pdf,pdf提取文字的一些技巧