回答編集履歴

1

コードを追加

2018/02/02 04:44

投稿

defghi1977
defghi1977

スコア4756

test CHANGED
@@ -86,7 +86,7 @@
86
86
 
87
87
 
88
88
 
89
- //イベントはdiv要素で受ける
89
+ //(1)イベントはdiv要素で受ける場合
90
90
 
91
91
  div.onmousemove = e => {
92
92
 
@@ -97,6 +97,48 @@
97
97
  const [x, y] = [e.offsetX, e.offsetY];
98
98
 
99
99
  ctx.fillRect(x - 2, y - 2, 4, 4);
100
+
101
+ };
102
+
103
+
104
+
105
+ //--------------------------------------------------------
106
+
107
+
108
+
109
+ //(2)canvas側の処理を触れない場合
110
+
111
+ //canvas側の描画処理(元からあるものを触らない)
112
+
113
+ canvas.onmousemove = e => {
114
+
115
+ ctx.clearRect(0, 0, canvas.width, canvas.height);
116
+
117
+ const [x, y] = [e.offsetX, e.offsetY];
118
+
119
+ ctx.fillRect(x - 2, y - 2, 4, 4);
120
+
121
+ };
122
+
123
+ //div要素で受けたイベントを元にcanvas要素側のイベントをトリガ
124
+
125
+ //NOTE:パラメータは必要に応じて追加する
126
+
127
+ div.onmousemove = e => {
128
+
129
+ canvas.dispatchEvent(new MouseEvent("mousemove", {
130
+
131
+ bubbles: false,//これがないと無限ループする
132
+
133
+ clientX: e.clientX,
134
+
135
+ clientY: e.clientY,
136
+
137
+ offsetX: e.offsetX,
138
+
139
+ offsetY: e.offsetY
140
+
141
+ }));
100
142
 
101
143
  };
102
144