javascript - 带有半透明点击图 block 的 HTML/JS/CSS 等距网格

标签 javascript html transparent tiles isometric

我正在尝试创建一个使用侧面“等距” View 和透明图 block 的网络应用程序/游戏。我可以使用仅将每个 div(每个图 block )设置为 position:absolute 并设置 top 和 left 参数的 PHP 公式来显示它们(但不是很好)。问题是我如何捕获对图 block 的点击并让带有透明位的图 block 点击到它下面的图 block 。

我的问题的一个例子是 http://stuff.adammw.homeip.net/other/fv/farmville_2.html

最佳答案

您无法对 tile 元素本身执行此操作,因为它们始终是矩形的。您必须监视鼠标在包含所有图 block 的父元素中的位置,并手动计算出哪些像素对应于哪些图 block 。

对于从位置到图 block 的等距映射,这很容易,但这需要将点位置视为“地面上”的一个地方;它不允许您使用图像的蒙版数据来 HitTest 对象,例如在地面前渲染的树木。 (无论如何你都想这样做吗?目前有些树完全遮住了它们下面的地砖。)

如果你真的需要针对图像 mask 进行 HitTest ,你可以:

一个。编写脚本以从图像中提取掩码数据并将其作为编码的二进制位掩码包含在 JavaScript 源代码中。我已经为 JavaScript 游戏中的碰撞检测完成了此操作,但这并不是很有趣,因为它会占用大量空间并且您必须在更新图形时重新导出数据。

使用 <canvas> 提取图像数据进行测试和 getImageData .鉴于您已经失去了 IE 用户,此时您可能也会考虑使用 Canvas 进行渲染。

关于javascript - 带有半透明点击图 block 的 HTML/JS/CSS 等距网格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2259651/

相关文章:

javascript - 我需要使用 AngularJS 从 JSON 文件创建 HTML 元素

ios - 具有透明背景的模态 UISplitViewController

python - 如何在matplotlib中使主轴透明,同时使zoomed_inset_axes不透明

javascript - 获取点击元素的索引

javascript - 是否可以从 Vorpal 提示符重新启动 Vorpal 应用程序?

javascript - React-router:防止导航到目标路线

html - html 5 中 sideber 小部件在语义上正确的容器是什么?

javascript - 从 Chrome 扩展中的弹出 .html 文件运行后台 .js 文件中的函数

html - 我应该用什么代替 '-ms-appearance: checkbox'

ios - UIImage 用另一个图像填充透明部分