如何拥有一个无限大的画布?

sdf*_*asd 8 javascript html5

我正在构建一个使用画布绘制的Web应用程序.我希望有一个无限大的绘图空间(您可以在任何方向上滚动任意长度)并将数据/图像保存到数据库.

在这里做了类似的事情:http://wordsquared.com/,播放它的人越多,它就越大.

我知道这需要以某种方式平铺图像,将它们保存到数据库中,然后只在视口中填充图像.如何完成这个和无限滚动/我应该从哪里开始?

ssu*_*ube 5

这有点不同寻常的方法,但只是潜在地(理论上,未绑定的存储空间)无限震撼我.

您将需要存储当前加载的电路板块,作为某种类型的唯一ID.块和它们的数据需要在包含以下列的表中:

  • 块ID
  • 块数据
  • 北方大块的ID
  • 南方的ID
  • 东方的ID
  • 西方的ID

你需要使用jQuery或类似的东西使画布可拖动(这个问题有一些信息).

现在,为要拖动的画布创建一个事件侦听器,并跟踪它移动的距离.释放后,如果画布未更改为其他块,则不执行任何操作.

如果画布已离开当前块,请使用存储的ID查找要加载的下一个块.如果ID为0,则假设该块尚不存在,并创建它.否则,加载块,替换现有块.将画布设置为居中.

凭借足够长的ID和足够的存储空间,这将为您提供无限画布,因为不使用任何坐标系.它还允许包裹边缘或创建虫洞.

如何实现它,我不太确定,但你只需要跟踪画布的移动距离.谷歌地图做了类似的事情,所以我会看看他们如何处理它(我会很快这样做,看看我是否可以在这个答案中添加一些实现细节).

这可能不是最实用或最简单的方法,但提出它很有趣.

编辑:我相信这是基本的功能:http: //candrews.net/blog/2010/10/introducing-sprymap/ 这是一个轻量级可拖动的JavaScript地图.你只需要跟踪多远.