Timer与EnterFrame是做动画经常用到的类

如果仅仅是简单的实现动画功能,二者皆可。但如果要求很精确的情况下误差就会显现出来,为了更准确的模拟动画,有必要了解下二者设和与何种场合。
 

1.关于误差

这几天做了一个视频植入文字和图片的flash,由于是给客户做不是自己做来玩的所以要求很是精确,一般情况下flash设定的帧数为24fps,这样动画播放起来人开起来是连续的(也就是说人眼能识别的最短时间差事1/24秒,也就是0.042s左右)所以刚开始设定timer时间间隔为50,

var timer :Timer = new Timer(50)

由于客户对图片播放跟视频同步要求的比较精确,在要求下又把timer间隔设为了10ms,在火狐下放测试地址一切调试完毕后,无奈客户是在IE下看的,跟火狐下差别甚大,在IE下查看效果Timer貌似有延迟,网上查了一下,Timer在时间间隔是100整倍数的时候误差还不是很大,如果只有10ms误差就显现出来了,结果把Timer设为100这样在IE和FF下基本没太大误差,但这样播放的不会太流畅,看起来会卡,用户体验不好

有人说是视频帧数与flash帧数不同照成的(实际上确实是不同的,视频是30fps,flash是24fps,但这不是关键也可以说无关,因为我是用timer跟视频同步不是用的enterframe)

所以改为Event.ENTER_FRAME,但又会有问题,视频播放暂停的时候植入点也同样要播放和暂停,Event.ENTER_FRAME不像Timer有stop()和start()那样方便
小技巧:用return
由于我是用判定时间来让植入点跟视频同步
所以缺不了if语句

设定全局变量 var _playState:String

if(_playStage=="pause"){return;}

.....//其他if语句

2.关于内存

由于计算量比较大在一个onTimer处理函数中,在onTimer里处理内容比较多:视频播放进度条变化,视频播放时间变化,图片文字植入点变化,发现一个重大问题,每当视频播放到某一固定时刻视频就卡主不动了(不是网速问题,因为本地测试也会出现此问题)查看cpu使用率不是很高,故究原因为内存,天剑onTimer2分担onTimer发现此问题解决,遂想flash分配给每个Timer内存有限?有待深究....