我有这个怪异的问题,我要增加1,但是当javascript窗口弹出时出现的增加表明我已经增加了9或13,这要么取决于我是否要增加1或-1。这是怎么回事?
此函数由requestAnimationFrame调用
function stream1() {
if (y > origin_y){
var xOffset = -1;
} else if (y == origin_y){
var xOffset = 1;
} else {
var xOffset = 1;
}
var offset = $( "#widget1" ).offset();
var x = offset.left;
var y = offset.top;
console.log(' X - '+x+' Y - '+y);
$( "#widget1" ).offset({ top: y-yOffset, left: xInitial+xOffset });
}
这是动画帧
var globalID;
function repeatOften() {
stream1();
requestAnimationFrame(repeatOften);
}
在警报消失并再次出现时,已经完成了9次迭代,对吗?应该是每秒60次,大约是1秒,所以不是60,而不是9或13吗?我不知道这些任意数字来自何处。
再次总结一下,最初的xInitial位于1114 px,然后到达1105或1103,然后每次都有9或13个间隙,那为什么呢?
最佳答案
首先,避免在帧回调中进行昂贵的操作。就像$( "#widget1" ).offset()
。请注意,这是DOM操作,可能会很慢并且破坏所有计时。您可以在动画开始之前获取DOM ID和偏移量,然后记住当前的偏移量左上角。
其次,如果要超精确,则可以使用处理程序urgument(时间戳),如果存储动画开始时间戳,则可以计算精确位置,而与实际帧率无关。
关于javascript - requestAnimationFrame javascript警报增量从1跳到9或13,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28617549/