帆布等距游戏引擎 - 移动地图

问题描述:

我已经通过教程(http://glacialflame.com/category/tutorial/)合作,建立一个等距游戏引擎,但我想在地图与字符作为焦点移动。帆布等距游戏引擎 - 移动地图

所以,当你移动 - 在角色在地图中心。

我有一个小引擎收录在这里: http://pastebin.com/U75Pz4Yy

看到它在这里的行动: http://www.wikiword.co.uk/release-candidate/canvas/newEngine/index.html

有一个小提琴,按要求! http://jsfiddle.net/neuroflux/vUxYg/2/

注:如果您使用的是IE6 这是唯一的HTML5和Canvas浏览器,不要抱怨;)

任何想法和帮助,将不胜感激,我想我可以做到这一点分别用+1或-1更新数组中的每个“切片”,但我似乎无法为画布上已有的切片图像执行ForEach循环。

提前欢呼!

+0

您应该制作一个jsFiddle,以便我们可以协作尝试:) – alex 2011-04-29 12:06:29

+0

更新后的问题:) – 2011-04-29 12:09:52

移动地图应该像玩家位置翻译上下文一样简单。

用X或Y的球员动作,所以应画布相同的量(或由负即量)翻译

我没有打扰找到合适的偏移,使兔子始终的中心屏幕,但它应该让你知道它是如何完成的。

+0

Simon Sarris - +1给你!绝对的明星!谢谢! – 2011-04-29 12:42:49

+0

很高兴帮助。我对Canvas游戏非常感兴趣,如果你有公开发展的话,我会很乐意关注你的游戏。 – 2011-04-29 14:18:19

+0

你的jsfiddle链接已死亡。如果你还有它们,请添加你的例子的相关部分。 – Ken 2012-01-29 14:44:08

我可以给一个想法,而不是只有一个画布,你可以管理3个帆布和设置他们3周的div绝对定位,让每个DIV是建立在透明的背景前面的顶部。

  • 一个背景
  • 一个玩家
  • 一个在地图上的对象(即可以重叠的球员)

画布会比看到操场较大(可能是用溢出CSS设置管理)。玩家总是在游乐场的中心。移动时,不必重绘背景和顶层,只需处理div位置,浏览器就可以完成图形工作。

之后还有装载新的背景砖的问题,可能有一些隐藏的帆布预紧处理。这种分层画布的方式可以应用于其他图层(活动标记图层,其他玩家图层等),它是一个'精灵层',其中浏览器图形引擎完成大部分最终屏幕图像渲染。

有几种方法来攻击这一点:

  1. 您可以移动整个画布,删除这成为无形(最终)的元素。那么如果左上角是-257467,374672呢?这只是渲染器的一个补充。

  2. 而不是移动的画布,你可以移动时代的图像。因此,为地图块的所有样式元素创建一个数组,然后在循环中移动background-image样式。地图元素保持原样,只有图像发生变化。

  3. 您可以创建/删除DOM节点加上移动现有的。但是根据我的经验,这很贵(因为浏览器需要弄清楚你改变了什么,然后更新DOM树,刷新渲染缓存,渲染你再次更改的部分,创建和销毁大量对象......)