teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

karamarimo様の回答を参考に編集

2017/10/09 18:06

投稿

namnium1125
namnium1125

スコア2045

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
- boxX = boxX + (clickX - boxX) / 50;
50
+ boxX += (clickX - boxX) / 50;
52
- boxY = boxY + (clickY - boxY) / 50;
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

誤字の修正

2017/10/09 18:06

投稿

namnium1125
namnium1125

スコア2045

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