У меня есть функция, которая перемещает мой холст, используя легкость в аспекте. Проблема в том, что анимация холста не работает. Он просто прокручивается слишком далеко и, кажется, слишком быстро.
Это моя функция, которая перемещает камеру в то место, где пользователь щелкнул на холсте:
function moveCamera(e,parent){
clearInterval(parent.scroll);
var mouseData = mousePos(evt,parent); //get x:y relative to element
var initial = {'x':el.width/2,'y':el.height/2},
target = {'x':mouseData.x,'y':mouseData.y},
deltaX = target.x-initial.x,
deltaY = target.y-initial.y,
timeStart = Date.now(),
timeLength = 800,
x,y,deltaTime;
function update(){
function fraction(t){
x = (target.x - initial.x) - (t*deltaX),
y = (target.y - initial.y) - (t*deltaY);
camera.x -= x;
camera.y -= y;
}
function easing(x) {
return 0.5 + 0.5 * Math.sin((x - 0.5) * Math.PI);
}
deltaTime = (Date.now() - timeStart) / timeLength;
if (deltaTime > 1) {
fraction(1);
} else {
fraction(easing(deltaTime));
}
}
parent.scroll = setInterval(update, 10);
}
Я приложил JSFiddle продемонстрированной проблемы: http://jsfiddle.net/p5xjmLay/< /strong> просто нажмите на холст, чтобы прокрутить до этой позиции, и вы увидите, что это немного сходит с ума.
Мне интересно, как решить эту проблему, чтобы смещение камеры каждый раз менялось правильно?