单击 canvas 时获取鼠标坐标
Get the mouse coordinates when clicking on canvas
一个常见问题,但我仍然需要帮助。当有人在 canvas 中单击时,我试图获取并存储鼠标坐标。
我的HTML
<canvas id="puppyCanvas" width="500" height="500" style="border:2px solid black" onclick = "storeGuess(event)"></canvas>
和我的javascript
//setup canvas
var canvasSetup = document.getElementById("puppyCanvas");
var ctx = canvasSetup.getContext("2d");
guessX = 0;//stores user's click on canvas
guessY = 0;//stores user's click on canvas
function storeGuess(event){
var x = event.clientX - ctx.canvas.offsetLeft;
var y = event.clientY - ctx.canvas.offsetTop;
/*guessX = x;
guessY = y;*/
console.log("x coords:" + x + ", y coords" + y);
我阅读了大量关于此的论坛、w3school 和视频。我快要弄清楚了,但是我遗漏了一些东西。如果我删除 ctx.canvas.offsetLeft 和 ctx.canvas.offsetTop,我可以获得页面的坐标。但我需要以某种方式合并这些以获得 canvas 的坐标,然后将其存储到变量 guessX 和 guessY 中。
您可以使用 MouseEvent
的 offsetX
and offsetY
属性 来实现
//setup canvas
var canvasSetup = document.getElementById("puppyCanvas");
var ctx = canvasSetup.getContext("2d");
guessX = 0; //stores user's click on canvas
guessY = 0; //stores user's click on canvas
function storeGuess(event) {
var x = event.offsetX;
var y = event.offsetY;
guessX = x;
guessY = y;
console.log("x coords: " + guessX + ", y coords: " + guessY);
}
<canvas id="puppyCanvas" width="500" height="500" style="border:2px solid black" onclick="storeGuess(event)"></canvas>
我正在使用这段代码。
var myCanvas = document.querySelector('#canvas');
myCanvas.addEventListener('click', function(event) {
var rect = myCanvas.getBoundingClientRect();
var x = event.clientX - rect.left;
var y = event.clientY - rect.top;
console.log("x: " + x + " y: " + y);
}, false);
<canvas width="400" height="400" id="canvas" style="background-color: lightblue"></canvas>
一个常见问题,但我仍然需要帮助。当有人在 canvas 中单击时,我试图获取并存储鼠标坐标。
我的HTML
<canvas id="puppyCanvas" width="500" height="500" style="border:2px solid black" onclick = "storeGuess(event)"></canvas>
和我的javascript
//setup canvas
var canvasSetup = document.getElementById("puppyCanvas");
var ctx = canvasSetup.getContext("2d");
guessX = 0;//stores user's click on canvas
guessY = 0;//stores user's click on canvas
function storeGuess(event){
var x = event.clientX - ctx.canvas.offsetLeft;
var y = event.clientY - ctx.canvas.offsetTop;
/*guessX = x;
guessY = y;*/
console.log("x coords:" + x + ", y coords" + y);
我阅读了大量关于此的论坛、w3school 和视频。我快要弄清楚了,但是我遗漏了一些东西。如果我删除 ctx.canvas.offsetLeft 和 ctx.canvas.offsetTop,我可以获得页面的坐标。但我需要以某种方式合并这些以获得 canvas 的坐标,然后将其存储到变量 guessX 和 guessY 中。
您可以使用 MouseEvent
offsetX
and offsetY
属性 来实现
//setup canvas
var canvasSetup = document.getElementById("puppyCanvas");
var ctx = canvasSetup.getContext("2d");
guessX = 0; //stores user's click on canvas
guessY = 0; //stores user's click on canvas
function storeGuess(event) {
var x = event.offsetX;
var y = event.offsetY;
guessX = x;
guessY = y;
console.log("x coords: " + guessX + ", y coords: " + guessY);
}
<canvas id="puppyCanvas" width="500" height="500" style="border:2px solid black" onclick="storeGuess(event)"></canvas>
我正在使用这段代码。
var myCanvas = document.querySelector('#canvas');
myCanvas.addEventListener('click', function(event) {
var rect = myCanvas.getBoundingClientRect();
var x = event.clientX - rect.left;
var y = event.clientY - rect.top;
console.log("x: " + x + " y: " + y);
}, false);
<canvas width="400" height="400" id="canvas" style="background-color: lightblue"></canvas>