Jquery 基于平铺的地图(web浏览器游戏)的算法,如部落战争世界地图

Jquery 基于平铺的地图(web浏览器游戏)的算法,如部落战争世界地图,jquery,ajax,post,tiles,world-map,Jquery,Ajax,Post,Tiles,World Map,我正在尝试创建一个基于瓷砖的世界地图,就像部落战争或西部游戏一样。 我创建了一点,但是当你用鼠标拖动地图时,加载速度太慢了 我的算法是这样工作的: 页面加载: 通过JQuery的$.post方法从1到19(x1到y1,x2到y2)加载平铺(我需要屏幕的宽度和高度,19=1900/平铺宽度,因为我希望地图填充整个页面) 将返回的数据(分幅)附加到屏幕上(到目前为止还不错) 在地图上拖动: 通过.post平铺再次加载(基于拖动的像素数) 再次追加数据(屏幕上的分幅) 如果你拖得慢,一切

我正在尝试创建一个基于瓷砖的世界地图,就像部落战争或西部游戏一样。 我创建了一点,但是当你用鼠标拖动地图时,加载速度太慢了

我的算法是这样工作的:
页面加载:

  • 通过JQuery的$.post方法从1到19(x1到y1,x2到y2)加载平铺(我需要屏幕的宽度和高度,19=1900/平铺宽度,因为我希望地图填充整个页面)
  • 将返回的数据(分幅)附加到屏幕上(到目前为止还不错)

在地图上拖动:

  • 通过.post平铺再次加载(基于拖动的像素数)
  • 再次追加数据(屏幕上的分幅)

如果你拖得慢,一切都正常,但是如果你想像个疯子一样拖,地图会变得一团糟(它不会加载所有的瓷砖)

如果可能的话,你能给我提供一个更好的算法和一些示例,或者一些源代码(我在谷歌上没有找到关于这两个游戏地图的任何信息)


另外,我试着在000webhost.com上举我的例子,但我不知道为什么
json\u decode()
返回
null
。在我的电脑上运行良好。

这只是一个一般的想法。
我无法向您提供源代码,但您应该做的很简单:
与每次移动鼠标时创建、附加、清除和重新附加不同,您应该创建类似“视口”的代码。因此,所有的图块都将被预设,然后在运行时,您将只在视口中打印大于-MAP\u TILE\u大小且小于屏幕宽度+MAP\u TILE\u大小的图块。

最后我创建了我想要的图块,我没有对每个拖动事件使用ajax请求。我只是在javascript数组中加载了整个地图数据

这是预览(图像不是我的,所以我不建议使用它们)


这是github上的地图

你能使用谷歌地图引擎吗?有一个自定义图层?我不这么认为。这是一个基于平铺的地图,有特定的平铺位置,但是如果我有22500个平铺呢?(150 x 150地图)是一张有不同瓷砖的地图,还是一个连续的图案?无论哪种方式,如果你运行缓慢,你要么在每次运行中执行很多操作,要么加载了太多的东西,我认为你属于第一类。另外,你如何用Javascript呈现这一点?你使用的是HTML5画布吗?是的,这是第一类。但是我该如何改进呢?如果我将所有地图数据加载到缓存中会更好?不,我不使用HMTL5。它只是简单的html div tag。它是一个连续的模式,还是一个平铺图,比如1 0 3 4 2 1 0?很抱歉对这样一个老问题发表评论,但是你还有代码吗?是的,我有。但是它已经不在github上了。你愿意和我分享吗?地图的代码链接到一个游戏,所以很难将它作为一个模块提取出来。代码非常古老。这是客户端渲染器(使用KineticJS)。我举了一个JSON示例来说明它需要的输入数据。这对你没有多大帮助(只是让你看看我是怎么做的)。基本上只是一个二维数组。为了让它工作,你需要图片和我做的其他一些小的LIB(这是整个游戏)