Flash Loading技术

 Loading技术是Flash中一个重要的环节,一般情况下该技术是采用百分比显示的方式来让用户直观地看到下载比,但是这种方法有一个严重的不足,就是当某帧的数据量特别大时,百分比和进度棒就会长时间停止不动,特别在使用一些大型位图或者大的事件声音文件时,由于这些目标的数据量一般都上百K大小,结果是用户在没有任何提示的情况下,不得不等特半分种左右时间(长短视连接速度而定),很多人因此放弃了继续等待,从而使得作品失去了一次展示机会,有没有办法解决呢?答案是肯定的。

  请大家先看一看下面的一段SWF文件的REPORT

Movie Report
------------

Frame # Frame Bytes Total Bytes Page
------- ----------- ----------- ---------------
1     76       76      loading
2    5971      6047      2
3     222      6269      3
4     50      6319      4
5    68089     74408      版头
6     156     74564      2
7     156     74720      3
8     156     74876      4
9     156     75032      5

  可以看出这个动画文件在前5帧就需要Loading70多K的数据,由于这帧用的是动画背景声音文件,并且已经无法再减小其大小,此时你可以采取时间模拟术来使得下载比发生变化,由于本制做方法与常规的loading制做在图形制做方面完全一致,故仅列出编程部分:

第一帧: 先取得时间初始值

Set Variable: "begin" = GetTimer
Set Variable: "delaytime"= 20
Set Variable: "begintime" = 0

第二帧:计算下载比。 begin代表用来比较的时间初始值,begintime表示已经下载了多少秒时间, loaded_num表示下载进度显示比(跟一般的loading制做下载比,初值是1),delaytime表示想要模拟的秒钟数。

Set Variable: "downloaded" = GetTimer
If ((begintime < delaytime ) and ( _framesloaded < 8 ))
comment:当时间小于20秒,并且已经下载帧数小于8时便做,
判断下载的帧数据是为了不让在本地硬盘上也等待相同的时间。
If (downloaded-begin>1000)
comment:当时间够一秒钟时就必需将下载比加1,时间加1秒,并重置初始时间。
Set Variable: "loaded_num"= loaded_num+1
Set Variable: "begintime" = begintime+1
Set Variable: "begin" = GetTimer
End If
Else
comment:跟正常的loading制做很相似,但必需加上前面的时间数,
用88去乘是因为根本不用完全等待动画下载完毕使可播放,
正常情况应是(100-delaytime),具体数值要根椐动画大小与总帧数来定。
Set Variable: "loaded_num" = delaytime+int(88*_framesloaded/_totalframes)
End If
Begin Tell Target ("/preload")
comment:显示进度条
Go to and Stop (/:loaded_num)
End Tell Target
comment:建议用大于等于判断下载比,且最好不用100,这样不会死循环。
If (loaded_num>=98)
Go to and Play (4)
End If

第三帧:循环。

Go to and Play (2)

第四帧:正常的动画内容。

注意:

  这个loading制做比一般的制做多一帧,需三帧来完成。
  时间模拟并不限定在什么位置,你可以根椐你的需要来对上述程序进行调整。最关键的就是①保证下载比的连续性。②下载比不超过100。③不死循环。
  尽量不要使用这种技术,而应该合理安排各个动画场景的的出场次序,让下载更加均匀。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值