我希望创建一个函数,在HTML5画布上使用requestAnimationFrame和delta time,将图像元素在y时间内滚动x像素。问题是当requestAnimationFrame已经用一个参数(DOMHighResTimeStamp)回调我的函数时,我不知道如何向函数添加更多参数。我相当肯定以下代码行不通:
function scroll(timestamp, distanceToScroll, secondsToScroll) {
//delta = how many milliseconds have passed between this and last draw
if (!lastDraw) {var lastDraw = timestamp;};
delta = (0.5 + (timestamp - lastDraw)) << 0; //bitwise hack for rounding integers
lastDraw = timestamp;
//speed (pixels per millisecond) = amount of pixels to move / length of animation (in milliseconds)
speed = distanceToScroll / secondsToScroll;
//new position = current position + (speed * delta)
position += (speed * delta);
context.drawImage(myImage,0,position,50,50/*of 200*/,0,0,100,100);
requestAnimationFrame(scroll(timestamp, distanceToScroll, secondsToScroll));
};
//later...
scroll(timestamp, 100, 5)
scroll(timestamp, 10, 20)
我的问题是,我不知道如何强制requestAnimationFrame在回调函数中传递我的其他参数,因为默认情况下它只传递一个参数(时间戳)。那么我该如何添加更多的参数(或者强制rAF将时间戳放入我的“时间戳”参数中)?