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

回答編集履歴

1

本文・コードを修正

2018/10/30 13:29

投稿

退会済みユーザー
answer CHANGED
@@ -2,11 +2,12 @@
2
2
 
3
3
  ```javascript
4
4
  function drawGhost() {
5
- c.beginPath() //追加
6
5
  c.lineWidth = 20;
7
6
  c.strokeStyle = '#fff';
8
7
  c.lineJoin = "round";
9
8
  c.lineCap = 'round';
9
+
10
+ c.beginPath() //追加
10
11
  c.moveTo(gX, gY);
11
12
  c.quadraticCurveTo(gPX,gPY, gXE,gYE);
12
13
  c.stroke();
@@ -23,7 +24,7 @@
23
24
  }
24
25
  ```
25
26
 
26
- `lineTo()`を呼び出すと、キャンバスのコンテキストに描画する線の情報を記録します。また、`stroke()`を呼び出すと、コンテキストに記録されている線の情報を元に線を描画します。
27
+ `lineTo()`を呼び出すと、コンテキストに描画する線の情報を記録します。また、`stroke()`を呼び出すと、コンテキストに記録されている線の情報を元に線を描画します。
27
28
 
28
29
  `lineTo()`で記録された線の情報は、`stroke()`で線を描画しても破棄されません。なので、毎フレームごとに描画される線の情報が溜まっていくため、前のオバケが残ってしまっています。
29
30
  (`clearRect()`自体は正常に動作しており、呼び出した直後は画面上から線は消去されています。しかし、次の`stroke()`が呼び出された時点で、これまでに描画した全ての線が再描画されてしまうため、前のオバケが残ってしまっているようになっています。)