[英]How can I register mouse events on canvas elements?
我想用帆布做一个小桌面游戏,让自己熟悉javascript和画布。 我可以很好地绘制电路板,但现在我想让特定的元素响应鼠标事件。 我可以这样做吗? 或者我是否需要为每个要绘制的板元素使用画布元素,并在每个元素上注册一个鼠标事件?
或者,更有可能的是,我绝对迷失在javascript中?
Som背景:我是一名系统开发人员,在了解了flex和flash之后,我决定尝试一些javascript。 所以不要拉扯任何拳!
简而言之:没有。 画布只是像素。 你需要的是SVG(或IE上的VML) - 或者更好的是像Raphaël那样会为你照顾它(它在IE上使用VML而在其他所有内容上使用SVG)。
现在更长的答案:你可以使用画布来做,但是你必须自己跟踪所有的对象和形状并计算自己点击了哪个对象,等等,这可能不是你想要的。 更新:现在有一些库可以为你做这些,比如EaselJS , KineticJS , Paper.js , Fabric.js和其他一些库 (请参阅画布库的比较以获取更多信息)。
另一方面,使用Raphaël编写如下代码:
var circle = r.circle(50, 50, 40);
circle.attr({fill: "red"});
circle.mouseover(function (event) {
this.attr({fill: "red"});
});
这很可能是你想要的。 如果您习惯使用HTML DOM和事件,感觉非常自然。 此外,它更便携 - 甚至可以在IE6中使用。
如果您可以访问Adobe Illustrator,则另一种选择可能是AI to canvas插件。 在本视频中,他们展示了一种为矢量形状定义可点击区域的技术: http : //visitmix.com/work/ai2canvas/tutorial9.html
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.