(HTML5)画布是否具有等效的图像映射?

时间:2010-05-28 20:11:46

标签: html5 canvas imagemap

Canvas元素是否具有等效的img's map,因此您可以在canvas元素上定义可点击区域?

在这里简短地提到了一个位于页面中间的地图:http://www.w3.org/TR/html5/the-canvas-element.html,但我找不到任何其他相关信息。

5 个答案:

答案 0 :(得分:14)

即使没有,如果位于画布上的透明图像上的图像地图不能满足您的需求吗?

答案 1 :(得分:13)

Canvas上的地图目前是HTML5的一个未解决的问题。问题#105准确无误。见http://www.w3.org/html/wg/tracker/issues/105

答案 2 :(得分:5)

作为你的问题的解决方案:我会在画布上附加一个点击事件,在鼠标事件中我会检查鼠标坐标,然后是一个简单的区域列表,结合多边形,你可以做一些碰撞测试上。矩形将是一个开始,但如果你真的需要特殊区域,则必须进行更高级的碰撞测试。

我在Flash中用于像素精度贴图的快速解决方案是制作第二个隐藏的叠加位图,用于在有人点击可见图像时进行查找。

与旧冒险游戏中使用的技术相同。每个“区域/对象/链接”具有其自己的像素颜色。然后你只需保留具有匹配颜色的对象列表。

一旦你在mousecoord下面有pixelcolor,你就可以在表格中快速查找..和宾果游戏......

首先清除带有零(黑色)的“点击图像”并且等于“无链接”,然后用特殊颜色绘制每个区域并将此颜色存储在列表中。

询问您是否需要更多帮助。我希望这是一个有用的答案。

答案 3 :(得分:2)

您是否考虑过使用svg代替画布?使用svg,图形本身可以包含识别活动区域所需的所有信息,并且您可以像在html元素上一样附加事件处理程序。

有关如何在svg形状几何体的不同部分检测鼠标事件的一些示例:

http://dev.w3.org/SVG/profiles/1.1F2/test/harness/htmlObject/interact-pevents-08-f.html

http://dev.w3.org/SVG/profiles/1.1F2/test/harness/htmlObject/interact-pevents-09-f.html

答案 4 :(得分:2)

看看Cake。这是一个用于画布的场景图插件。对于你正在寻找的东西可能有点过于复杂,但你可以向Cake包装的画布对象添加事件。