在Javascript HTML5 Canvas中获取鼠标点坐标
Getting mouse point coordinates in Javascript HTML5 Canvas
我很难获得鼠标坐标和英雄的坐标。
当我点击画布的右下角时,鼠标点击得到的结果是x = 641, y = 386。敌人的坐标系统百分百准确。
看来敌人的坐标系统和鼠标的坐标系统不一样。我希望它们在同一个坐标系中。谢谢你的帮助!
这是canvas的初始化:
<canvas id="canvas" width = "1664" height = "1000" style = "border:1px solid gray; width: 640px; height 480px;"> </canvas>
function getMousePos(canvas, evt) {
var rect = canvas.getBoundingClientRect();
return {
x: evt.clientX - rect.left,
y: evt.clientY - rect.top
};
}
var mousePos = getMousePos(Context.canvas,e);
//Use mousePos.x or mousePos.y to get the coordinates of the mouse click
var mx, my;
if(e.offsetX) {
mx = e.offsetX;
my = e.offsetY;
}
else if(e.layerX) {
mx = e.layerX;
my = e.layerY;
}
Gun.shoot()
for (var i = EnemyManager.enemies.length - 1; i >= 0; i--) {
var enemy = EnemyManager.enemies[i]
console.log("Enemy: " + enemy.x + " " + enemy.y)
console.log("Mouse: " + mousePos.x + " " + mousePos.y)
if ((enemy.x < mx) && (enemy.y < my) && ( (enemy.x + enemy.width) > mx ) && (enemy.y + enemy.height > my)) {
alert("Target HIT")
}
};
})*
我在使用画布时遇到了同样的问题(特别是当在页面上向下滚动时,它需要工作,从页面顶部通过任意div偏移,以及在不同的缩放级别)。我发现这个答案中的方法作为getMousePos函数的替代品是最健壮的。
您接收到不同的坐标可能是因为您使用了两种不同的方法。在玩家的位置,你使用offsetX
而不是mousePos.X
(比较enemy.X
)
此外,由于将getMousePos
的返回定义为X和Y,因此需要将它们作为X和Y访问。
var mx, my;
mx = mousePos.X;
my = mousePos.Y;
编辑:你可能也会发现这个链接很有帮助。
您在画布外单击,请参阅我的示例http://jsfiddle.net/gn0pkkra/。
document.getElementById('wrapper').addEventListener('click', on_canvas_click, false);
你可以计算精确的轨迹,即使你在画布外点击。然后笛卡尔坐标将在画布上的游戏大炮位置上具有中心(0,0)。计算画布左上角的炮/炮偏移量(real 0,0),并使用这些偏移量来检测你的轨迹。
点击画布的右下角,甚至在它的外面是不可能得到负值的。
相关文章:
- EaseJS拖放;放下(动画CC)电影剪辑的鼠标坐标
- AngularJS-如何在mousemove上存储鼠标坐标
- 当鼠标停止或改变方向时获取鼠标坐标
- 将鼠标坐标保存在阵列中
- 如何以百分比计算鼠标坐标 javascript
- 画布:当存在*border*时,获取鼠标坐标
- 如何在Fabric.js上获取鼠标坐标
- Javascript/Canvas-查找相对于坐标网格位置的鼠标坐标
- 获取画布中图像内的鼠标坐标
- HTML5画布绘图应用程序中的鼠标坐标漂移
- 画布 - 在调整窗口大小时转换鼠标坐标
- 滚动弄乱了我的画布鼠标坐标 - Javascript Telerik Mobile
- 在视频元素上获取准确的鼠标坐标
- DIV - JavaScript 中的相对鼠标坐标
- 如何将 JS 鼠标坐标获取到 PHP 插入查询中
- 获取每次点击的鼠标坐标
- OpenLayers 3 在选择交互时获取鼠标坐标
- Javascript鼠标坐标没有事件
- D3:跟随鼠标坐标
- 如何在卸载之前保存鼠标坐标