當你駕車在高速公路上行駛時,速度是很快的,而快到收費站時,則開始減速直到停下。将這個例子轉換成實體模型就是當物體向終點運動時,開始速度會很快,而在快要到達終點時,速度會逐漸放緩直至0,整個運動過程就是緩動。距離越遠,速度就越大,距離越近,速度就越慢,也就是距離和速度是成正比關系的。
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5yNzgzMzUDOxkTMtgTMzYDM2MTNxcjMyAjNxAjMtYjNxgjM08CXyAjNxAjMvwlN2EDOyQzLcd2bsJ2Lc12bj5ycn9Gbi52YuUTMwIzcldWYtl2Lc9CX6MHc0RHaiojIsJye.png)
v = (target - currentPosition) * k; // k(0,1]
然而這樣物體是永遠無法到達目标點的,因為存在很多小數,是以不能達到target === x。為了解決這個問題,需要加上一段限制避免備援的運算:
if(Math.abs(targetX - ball.x) < 0.1 && Math.abs(targetY - ball.y) < 0.1) {
ball.x = targetX;
ball.y = targetY;
window.cancelRequestAnimationFrame(requestId);
}