回答編集履歴
2
karamarimo様の回答を参考に編集
answer
CHANGED
@@ -17,7 +17,7 @@
|
|
17
17
|
|
18
18
|
ですから`Math.round()`等の関数を使用して区切りのいい所で止まるようにしましょう。
|
19
19
|
|
20
|
-
以下コードです。1つめは大体の位置が同じなら何もせず、違っていれば再帰処理させるというものです。
|
20
|
+
以下コードです。1つめは大体の位置が同じなら何もせず、違っていれば再帰処理させるというものです。(1つめの方はkaramarimo様の回答を参考に場合分けは消しました。)
|
21
21
|
```javascript
|
22
22
|
var box = document.getElementById('box');
|
23
23
|
var clientRect;
|
@@ -47,13 +47,8 @@
|
|
47
47
|
preX = Math.round(boxX*100);
|
48
48
|
preY = Math.round(boxY*100);
|
49
49
|
|
50
|
-
if(boxX < clickX || boxY < clickY){
|
51
|
-
|
50
|
+
boxX += (clickX - boxX) / 50;
|
52
|
-
|
51
|
+
boxY += (clickY - boxY) / 50;
|
53
|
-
} else if(boxX > clickX || boxY > clickY){
|
54
|
-
boxX = boxX - (boxX - clickX) / 50;
|
55
|
-
boxY = boxY - (boxY - clickY) / 50;
|
56
|
-
}
|
57
52
|
|
58
53
|
// 小数第3位を四捨五入して小数第2位で比較
|
59
54
|
if(Math.round(boxX*100)!=preX || Math.round(boxY*100)!=preY) setTimeout(move,30);
|
1
誤字の修正
answer
CHANGED
@@ -9,7 +9,7 @@
|
|
9
9
|
|
10
10
|
実は質問者様のプログラムは似たような状況になっているんです。
|
11
11
|
「残りの距離の1/2だけ進む」というのは良いアイデアだったと思いますが、
|
12
|
-
これは目的地には**極限を取ると**着きますが、実際には**限りなく近くだけでたどり着けない**んです。
|
12
|
+
これは目的地には**極限を取ると**着きますが、実際には**限りなく近づくだけでたどり着けない**んです。
|
13
13
|
|
14
14
|
これは`console.log("boxX : "+boxX+" clickX : "+clickX);`のようなコードで確認していただけると思います。
|
15
15
|
|