我是个ActionScript 2的门外汉,最近在硬着头皮做Flash。其中有个剪辑需要水平平滑移动。写好代码之后,测试正常。到IE中一看,移动速度却慢得像蜗牛。
原来的代码类似这样:
clearInterval(moveTimer);
moveTimer = setInterval(doMove,10);
function doMove(){
item._x += 90;
if( item._x >= 8964){
clearInterval(moveTimer);
// do something else
}
}
一直知道经常需要为 IE6 编写多余的 JavaScript、CSS 。没想到 AS 也是。这个移动速度问题,可能是 IE6 的处理效率低的缘故。本来对于移动速度没有特别的要求,流畅、迅速即可。情况特殊,也不适合用帧来处理。
于此同时,也发现利用 setInterval 来实现的计时器,在IE6 中也极不准确。后来无奈,改用算时方式,指定时间与运动距离:
var moveStartTime:Number = getTimer();
var millsecond:Number = 1000;
clearInterval(moveTimer);
moveTimer = setInterval(doMove,10);
function doMove(){
var timePast = getTimer() - moveStartTime;
var distance = (8964/millisecond) * timePast;
if( distance > 8964){
item._x = 8964;
clearInterval(moveTimer);
// do something else
}else{
item._x = distance;
}
}
IE6 真是让人情何以堪哪。最近用上了 mg12 的 kill ie6 Widget。同时发现,我的博客竟然一直以来在IE6中是裸奔状态,嗯,我也不大清楚是怎么回事儿,等有空再琢磨吧。
Webmention
Comment Form
许久没有来逛了!!
我一直在用FIREFOX,再FLASH方面表现好很多啊
早就不用ie6了
问题是客户在用啊~
所以摒弃IE6是必须滴...