对Flash Loading所处位置对影片的影响的研究 不指定

今天工作不是很忙,想起主管前断时间提出的一个问题,就是Flash中加载影片时,Loading的位置对影片的影响.所以就对这个问题进行一些探讨.

Flash Loading有多种制作及加载方式,本文研究的重点是讨论主影片中加载外部swf文件时Loading的位置对影片的影响.也就是将Loading写在主影片内部还是被加载影片中.

首先从缓存进行考虑,由于浏览器可以缓存Flash文件,因此Loading放在主影片内部,或者被加载影片中都没有影响,浏览器第一次会自动缓存这些文件.

从操作以及维护上进行分析,在主影片上的Loading可以写成一个函数,然后加载外部SWF文件时可以调用这个函数,维护方便,另外如果是加载jpg等图片时候也可以使用Loading.放在被加载的外部文件中具有不同影片的Loading相互独立,可以制作多种Loading效果.

从响应以及加载速度上分析:[同一主文件及外部加载文件,Flash MX2004Professional]

1: 对主文件内部Loading加载外部文件进行测试:

在主文件中新建一个按钮和一个名称为jindutiao的进度条影片,AS代码如下:
程序代码:

on (press) {
   t1 = getTimer();
   _root.createEmptyMovieClip("m1_mc", 2);//建立一个空MC
   m1_mc.loadMovie("1.swf");//加载文件名为1.swf的外部文件
   m1_mc._visible = false;
   _root.onEnterFrame = function() {
       t2 = getTimer();
       var l = m1_mc.getBytesLoaded();//取得下载字节数
       var t = m1_mc.getBytesTotal();//取得SWF总字节数
       per = int((l/t)*100);//per是动态文本框
       if ((l>=t) && (t>0)) {
           t3 = getTimer();
           trace(t3);
           trace(t3-t2);
           trace(t2-t1);
           delete this.onEnterFrame;//删除帧触发事件
           m1_mc._visible = true;//使MC可见
           jindutiao._visible = false;//使进度条可不见
           m1_mc._x = 0;//调整位置,也可调其它属性
           m1_mc._y = 0;
       } else {
           jindutiao._visible = true;
           setProperty("jindutiao", _xscale, per);
       }
   }
}


参数:

将Loading代码写在主文件内部时,主文件大小为3792字节,加载文件702539字节,在33400B/S的带宽下进行5次测试,时间分布如下:

21034ms
21048ms
21021ms
21060ms
21082ms
平均:21049ms,两个影片总字节数:706331

2: 对主文件加载包含Loading的外部文件进行测试:

主影片中新建一个按钮和一个名称为jindutiao的进度条影片
程序代码:


on (press) {
   t2 = getTimer ();
   trace(t2);
   loadMovie("2.swf","_root.m1_mc");
          onEnterFrame = function () {//使用onEnterFrame 是因为被加载进来的的过程中,有点延时,如果没有onEnterFrame语句,那么语句读取一次就不读取了,然而读取了这一次之后,还没有加载进来.
             _root.m1_mc._x = 0;
             _root.m1_mc._y = 0;
      }
   }



在被加载的外部文件中写Loading的AS代码:

第一帧:
程序代码:

total = getBytesTotal();//注意,不要用_root.getBytesTotal();因为避免被加载到主影片时会产生路径问题
loaded = getBytesLoaded();
baifenshu = int((loaded/total)*100);
baifenbi = baifenshu+"%";
setProperty("jindutiao", _xscale, baifenshu);
t = getTimer ();


第二帧:
程序代码:

if (baifenshu == 100) {
   trace(t);
   gotoAndPlay(3);
} else {
   gotoAndPlay(1);
}


参数:

将Loading代码写在被加载的外部文件时,主文件大小为3395字节,加载文件702971字节,在33400B/S的带宽下进行5次测试,时间分布如下:

21038ms
21094ms
21033ms
21038ms
21030ms
平均:21046.6ms,两个影片总字节数:706336

两种方式加载的区别不是很明显,因此可以根据不同需要选择适当的加载方式.

[ 来自:夏聪 ]
Tags:
发表评论
表情
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
打开HTML
打开UBB
打开表情
隐藏
记住我
昵称   密码   游客无需密码
网址   电邮   [注册]