我有一個功能,它可以輕鬆地移動我的畫布。問題是如何畫布動畫不起作用。它只是滾動得太遠,而且看起來太快。Javascript動畫easing
這是我的功能,攝像頭移動到用戶點擊畫布上的位置:
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);
}
我已經attatched問題的的jsfiddle證明:http://jsfiddle.net/p5xjmLay/只需點擊畫布滾動到上那個位置,你會發現它有點瘋狂。
我想知道如何解決這個問題,使相機的偏移量每次都正確地改變?
是不是一樣http://stackoverflow.com/questions/32600794/ease-在攝像機外移動畫布? – Kaiido
@Kaiido它是它的早期版本,當我有不同的設置。這確實有用,但它用來將攝像頭位置設置到它的位置,因爲我希望獲得差異,並更新每個循環的攝像頭偏移量。正如你可以在jsFiddle中看到的那樣,它並不實際工作,因爲這些更改並不確定原因。 – Sir