html - 点击 map 示例对我不起作用

标签 html canvas

很抱歉这个愚蠢的问题! :D

我正在尝试使用 html5 canvas 元素制作可点击的 map ,我发现这个很好的例子:http://www.rubydesigner.com/blog/click-map-using-html5-canvas

但是当从 Chrome 下载它 (CTRL+S) 时它不起作用。它下载带有 JS 图像的 html 页面和文件文件夹,我检查了图像的路径,但 map 仍然没有出现。有什么问题?

最佳答案

更新

最初关于 CORS 的假设在此处并非如此。

该代码似乎在 Chrome 中有效,尽管 CORS 通常是下载文件和使用具有本地 (file://) 文件引用的 Canvas 时的原因。由于此处通过 XAMMP 使用 localhost,这不是原因,事实证明在线代码中存在不止一个错误。

特别是它计算鼠标坐标的方式:

var datapos = ((e.offsetY-2) * 300 * 4) + ((e.offsetX-1) * 4);

由于 offsetX/Y,这将导致 NaN 值,当然不能用于任何索引。

比较合适的做法是这样的,这里也补偿 Canvas 偏移:

var rect = map_wrapper.getBoundingClientRect();
var datapos = ((e.clientY - (rect.top |0)) * 300 * 4) +
              ((e.clientX - (rect.left|0)) * 4);

但是,我从来没有遇到过这里似乎是这种情况的元素的浮点位置(rect.top 在我的浏览器中显示了一个浮点值,这又是一个小惊喜)因此我在这里将值强制为整数(通常不一定..我没有深入研究这个)。由于调试整个代码有点超出了这里的范围,我将把它留给 OP 来定位其他错误。

校正位置至少会为像素阵列提供一个可用的索引,该索引又会返回一个有效的(事实证明不一定正确,这会留下图像检查,以防万一应用 Gamma /颜色校正... .) 红色组件的值(测试时仍然存在问题,但如前所述,它有点超出了进行全面调试和更正的范围)。

希望这可以引导您找到其他错误所在。我没有通过 html 等。

关于html - 点击 map 示例对我不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17640410/

相关文章:

javascript - 如何在 kinetic.js 中选择一个对象?

html - 更改第一个 div 中第一段的背景颜色

Android 文本显示 - Canvas.drawText() 输出像素化

javascript - 在 Canvas 上绘制特定区域

html - 如何更改星星的背景图片?

html - CSS 帮助创建一个盒子,我在彼此之上叠加层

javascript - 使用compressor.js使用图像作为水印

javascript - 如何检查鼠标单击是否位于 JavaScript 中 HTML5 Canvas 上的旋转文本内?

c# - 统一引擎 : Which component called a running script?

javascript - style.width 不适用于 innerWidth