首先得知道flash播放头每到一帧就是把前一帧的场景刷新一下,显示下一帧的内容...。
updateAfterEvent()是用在播放头未到下一帧,还未更新,用户却要强制更新的地方 。
HBB是这样比喻的:
引用
“这就等于是说,规定短跑运动员500米休息一次,onEnterFrame的速度正好是1分钟500米,那么他500米就可以休息一次了,setInterval设置速度为1分钟600米,那么在500米的时候还没有到1分钟,所以他还要跑,但是如果我硬性规定setInterval在500米的时候要休息,那么就算他跑完500米没用完1分钟还是会休息的,至于onEF,不用规定他500米,因为他的速度本来就是500米 ”
进一步解释:
引用
onEF刷新的频率就是fps规定的,而setInterval或者其他的是没有规定的,所以在setInterval调用的函数里面,用户可以自己定义,也就是使用updateAfterEvent()
然后一个简单明了的小例子(把fps调低点再测试哦~):
引用
sf = function(){
updateAfterEvent();
mc._x = _root._xmouse;
mc._y = _root._ymouse;
}
//分别测试下面三种情况
//onEnterFrame = sf;
//onMouseMove = sf;
//setInterval(sf,10)
补充:
引用
不过有点setInterval比较特殊
因为他是根据自定义时间调用的,所以会大于fps也可能小于fps,反正会和fps有冲突,+个update就是在每次执行setInterval调用时强制刷新