0

我一直致力于为画布构建基于图块的显示网格。这是我到目前为止所拥有的:http: //jsfiddle.net/dDmTf/7/

我遇到的一些问题,不能完全掌握是:

  1. 初始加载时间很荒谬......我不明白我做错了什么- 已修复,发现我渲染的 ^32 比我应该做的多
  2. 悬停效果“应该”只是突出显示图块的边框,将其删除,如果不重新渲染整个画布,我无法恢复前一个图块。
  3. 如何使用 tilesheets,为我提供单个图像而不是一堆小图像
  4. 调整窗口大小(调整画布大小)也会擦除画布。我需要重新渲染吗?或者我可以在宽度/高度发生变化时保持各种状态- 添加一个onresize回调,重新渲染地图。可能不是最好的方法吗?
  5. 多层?我将如何开始允许透明 .png 文件相互叠加

这些是我现在遇到的主要问题,任何指导都将不胜感激。

另外,如果您对我的 javascript 有任何指示,请随意!我正在学习更多,我确信我做错了很多事情。

编辑

作为一个仅供参考,我只是复制粘贴了当前显示在 jsfiddle 上的精灵图。这不是我打算使用的,但它比上传一个更容易。我计划维护一个 32x32 网格,而不是(看起来是)来自该 tilesheet 的 16x16 网格

编辑

我现在在那里显示了一个 32x32 的 tilesheet,但悬停效果仍在破坏它,我不确定如何“知道”旧值是什么。

4

1 回答 1

1

问题是你没有在'mouseout'之后重绘你的瓷砖。您要么需要在移出单个图块后重新绘制它,但这可能会变得棘手,因为事情变得更加复杂或更好,但在鼠标移动时执行以下操作。

  • 清除画布
  • 绘制网格
  • 画你的瓷砖
  • 然后突出显示/清除该单元格。

如果您最终拥有任何类型的动画,这就是无论如何都会使用的过程,否则当某些东西从一个瓷砖移动到另一个瓷砖时,它会留下鬼影。

于 2012-12-01T03:11:06.253 回答