Я хочу создать функцию, которая прокручивает элемент изображения на x пикселей за время y на холсте HTML5, используя requestAnimationFrame и дельта-время. Я не могу понять, как добавить больше аргументов к моей функции, когда 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 поставить метку времени в аргумент «метка времени»)?