私のウェブページの幅と高さに渡って、背景のように<canvas>
要素があります。マウス座標に依存するインタラクティブな要素があります。キャンバスが自分のブロック(つまり、何もない)に入っていれば、インタラクティブな要素はうまく機能しました。しかし、今ではそれ以上のdivを持っているので、それはマウスの相互作用のいずれかを拾っていない。キャンバスを登録してdivを使ってマウスを移動させる
以下は、mousemove用のjavascriptコードです。なぜ上の項目がマウスのxy座標をピックアップするのに影響し、どうすれば修正できますか?あなたがマウスを認識するトップdivを必要としない場合
var mouse = {x:-100,y:-100};
var mouseOnScreen = false;
canvas.addEventListener('mousemove', MouseMove, false);
canvas.addEventListener('mouseout', MouseOut, false);
var MouseMove = function(e) {
if (e.layerX || e.layerX == 0) {
//Reset particle positions
mouseOnScreen = true;
mouse.x = e.layerX - canvas.offsetLeft;
mouse.y = e.layerY - canvas.offsetTop;
}
}
var MouseOut = function(e) {
mouseOnScreen = false;
mouse.x = -100;
mouse.y = -100;
}
var update = function(){
var i, dx, dy, sqrDist, scale;
//...... this chunk is the only part of the function that references the mouse
dx = parts[i].x - mouse.x;
dy = parts[i].y - mouse.y;
sqrDist = Math.sqrt(dx*dx + dy*dy);
if (sqrDist < 20){
parts[i].r = true;
}
.....
}
(他のすべてのブラウザに加えて)Firefoxで動作するようにoffsetXとoffsetYにマウスのコードで元layerXとlayerYを変えいや、私はそれが動作しませんので、トップのdiv内のボタンまたは2をクリックする必要があります。しかし、よく知っている!マウスのイベント - キャンバスの座標部分の操作方法を知っているとしたら、 – Acoustic77
おそらく 'fillRect'と' fillText'を使ってボタンをキャンバスに描画し、ボタンの四角形でキャンバスをクリックすると反応しますか? – markE
キャンバスはマウスの位置以外のものとやり取りする必要はないので、私はそれを持っているdivを再設計するよりマウスの位置を追跡するだけです。 divははるかに複雑です – Acoustic77