如何检测是否单击 Html 画布的某个区域
How to sense if a certain area of an Html Canvas is clicked
>我正在画布上制作一个游戏,需要单击画布的某个区域。
我需要找到一种方法来查找鼠标的坐标以及如何感知是否单击了卡坦区域。
我想要一个看起来像这样的命令:
if(MouseX>20 && MouseX<40 && MouseY >20 && MouseY <40 && MouseClick==true){
alert("you clicked this area");
}
您可以为鼠标移动创建一个事件侦听器,并跟踪 x 和 y 坐标。可以为点击事件创建另一个侦听器,这样您就可以访问点击是否位于某个位置。
小提琴
var mousePos = {
x: null,
y: null
}
document.addEventListener("mousemove", function(e) {
mousePos.x = e.clientX;
mousePos.y = e.clientY;
});
document.addEventListener("click", function(e) {
console.log(mousePos);
});
这两个侦听器并不是绝对必要的,因为 clientX 和 clientY 都在单击事件上,但我发现即使按钮没有被单击,知道鼠标的位置通常也是件好事。
更新
我习惯于处理全屏画布,但确实,我在这里放置的代码只会为您提供鼠标在文档上的位置,而不是画布上的位置。 事件对象上的 .layerX 和 .layerY 将为您提供相对于元素的位置。
如果您只对画布区域感兴趣,请使用以下跨浏览器代码:
var canvas = document.querySelector('canvas');
canvas.addEventListener('click', function (e) {
var MouseX = e.pageX - this.offsetLeft;
var MouseY = e.pageY - this.offsetTop;
});
相关文章:
- <text区域>在我的html中包含event.keycode==13之后,wrap就不起作用了
- 使用javascript html实时预览文本区域输入
- HTML-从mysql生成的选择框中的一个选项更改文本区域的颜色
- 不使用自定义CSS或HTML(使用框架方法)的角度材质文本输入或文本区域标签大小
- Javascript按钮,在html文本区域中插入一个大黑点(•)
- 更换163;使用javascript从html文本区域中提取字符
- 将 HTML 表的 元素指定为“骨干.js木偶”中的区域
- HTML 编码<文本区域>值
- HTML + JS:设置文本区域内容样式的最佳方式
- 将 HTML 文本区域值转换为 jqmath 公式
- AngularJS 在文本区域中渲染 HTML
- HTML表单选项(是或否)然后下拉文本区域
- HTML文本区域文本到XML
- 是否覆盖网站上文本输入区域的默认移动设备键盘?(HTML/JS/jQuery)
- 更改文本区域字段、HTML、JS、jQuery
- 在HTML中记住用户区域设置选择的最简单方法
- Tinymce删除<html>在文本区域中输出时标记
- 同步html中的文本区域
- 文本区域 HTML 标记将转换为纯文本
- 通过PHP发送文本区域HTML代码以显示为HTML