HTML5 画布鼠标悬停事件
HTML5 canvas Mouseover event
如何将鼠标悬停或任何事件绑定到画布上的绘制对象?例如,我尝试了这个:
var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
ctx.beginPath();
//STEP ONE
var stepOneRec = ctx.rect(20, 60, 266, 50);
ctx.stroke();
stepOneRec.addEventListener("mouseover", function() { alert('it works!'); });
在一个网站上,我看了看它显示了使用Kinetic.js的方法。如果这是唯一的方法,我会使用它,我只是假设有一种方法可以将事件绑定到绘制的元素,而无需额外的插件。对不起帆布菜鸟。我在这里摆弄了一下我的代码:http://jsfiddle.net/jyBSZ/2/
(
我开始是作为发布评论,然后意识到这是一个实际的答案。
不幸的是,在javascript本身中,你不能。 没有画布对象,只有整个画布,以及您绘制到其上下文的任何内容。 像kinetic这样的插件可以为你制作对象,但canvas的全部意义在于浏览器可以将其视为单个静态图像。
如果你愿意,你可以将鼠标移动事件绑定到画布,跟踪它的位置和你绘制内容的位置,并自己暗示它在"那个对象"上(实际上是插件的作用),但它都是单个画布上的鼠标移动事件,而不是鼠标悬停在画布上的事件。 (您甚至可以使事件绑定模拟"对象"的鼠标悬停事件,但在下面,它仍然基于检查移动和检查您自己的对象设置。
在画布元素中绘制的对象不是 HTML 元素,只是像素,因此不会像 HTML 元素那样抛出 DOM 事件。
您需要自己跟踪对象的位置并处理画布的onmousemove
事件,以确定鼠标何时位于绘制的对象之一上。
你可以
使用 jCanvas,看看这里
我为您的问题制作了一个 JSFIDDLE 示例。
只需修改下一个回调即可获得所需的结果
function mouseOut(layer){
$("#mouse-over-text").html('none options selected');
}
function mouseIn(layer){
$("#mouse-over-text").html(getTextForId(layer.name));
}
相关文章:
- 鼠标悬停事件影响列表中所有行中的按钮,而不仅仅是特定按钮
- 如何在asp:linkButton上显示鼠标悬停事件上的图像
- 当鼠标也在触摸另一个元素时,d3.js鼠标悬停事件未被触发
- Jquery 悬停事件卡在克隆元素上
- 鼠标悬停事件不会触发以触发 D3 中的单击事件
- 在悬停事件中创建一次性操作
- Kango 浏览器扩展开发中的鼠标悬停事件弹出窗口
- 覆盖对话框悬停事件
- Raphael悬停事件和调整大小框在第三次鼠标悬停后发生故障
- 定位将禁用悬停选择器和鼠标悬停事件
- 在余烬中传播悬停事件
- 创建随机图像交换并禁止鼠标悬停事件
- 每个元素有多个鼠标悬停事件
- 谷歌分析悬停事件跟踪
- 在每个条形图的中间添加文本标签&鼠标悬停事件
- 悬停事件上的删除按钮
- 使用单击和悬停事件在jquery中创建虚拟鼠标垫
- 无法让悬停事件使用 jQuery UI 持续时间参数或 CSS 处理目标元素的同级元素
- 正在停止对多个悬停事件的传播
- 禁用网页上的鼠标悬停事件