鼠标悬停圈HTML5画布

时间:2011-06-28 11:33:46

标签: html5 canvas event-handling

我想知道如何将一个区域设置为画布中定义的半复杂形状(圆形),这样当用户将鼠标悬停在形状上时,将调用一个函数。

我不想使用任何库,例如KineticJS等。

目前我已经向canvas元素添加了一个事件监听器,以便在鼠标移动时调用多个函数;其中一个计算出相对于画布的鼠标x / y坐标。因此,任何矩形形状都很容易“监听”使用基本的if语句(因为画布是交互式的,并且每次鼠标移动都会重新绘制)。

对于圆形对象,以及说三角形对象,有没有办法使用类似的方法使用三角函数和if语句?

或者有没有更好的方法在画布上有多个区域,鼠标悬停,调用函数?

干杯

2 个答案:

答案 0 :(得分:9)

如果您知道鼠标在哪里并且您知道圆圈在画布上的位置,那么当鼠标到圆心的距离小于半径时,鼠标就在圆圈内。如果这是真的,请手动拨打您需要呼叫的内容。

希望有所帮助

答案 1 :(得分:6)

如果你想拥有多个半复杂的形状并且不想制作任何复杂的数学函数,你可以随时使用幽灵画布。

这个想法是,当你想测试一个形状时,你将每个相关的形状绘制到内存中的画布上,并测试鼠标x / y像素以查看是否存在某些形状。

我详细介绍了如何在this tutorial.

中执行此操作

它适用于少量物体,但如果您计划在屏幕上拥有超过200个物体,则需要切换到更快速的数学方法。