首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动开发 >

libgdx学习之TiledMap(1)

2013-03-25 
libgdx学习之TiledMap(一)? ? ? ?libgdx自0.9.8版本开始对tile map的读取重新进行了实现,原来com.badlogic

libgdx学习之TiledMap(一)

? ? ? ?libgdx自0.9.8版本开始对tile map的读取重新进行了实现,原来com.badlogic.gdx.graphics.g2d.tiled包下的类不在使用,新的map包位于com.badlogic.gdx.maps,增强了libgdx在地图方面的扩展性、灵活性。前后两种tile map的加载方式也有所区别。0.9.8之前的tiledmap加载方法请见博文:http://www.cnblogs.com/htynkn/archive/2012/01/13/libgdx_14.html

一、map类结构关系

代码见这里


libgdx学习之TiledMap(1)

可以继承map、maprenderer等实现自己的地图结构

?

二、tmx文件结构

<?xml version="1.0" encoding="UTF-8"?><map version="1.0" orientation="orthogonal" width="13" height="8" tilewidth="64" tileheight="64"> <tileset firstgid="1" name="grass_ground" tilewidth="64" tileheight="64">  <image source="grass_ground.png" trans="000000" width="512" height="512"/>  <tile id="56">   <properties>    <property name="groupid" value="1"/>   </properties>  </tile>  <tile id="57">   <properties>    <property name="groupid" value="2"/>   </properties>  </tile>  <tile id="60">   <properties>    <property name="groupid" value="1"/>    <property name="targetid" value="2"/>    <property name="unittype" value="hero"/>   </properties>  </tile>  <tile id="61">   <properties>    <property name="groupid" value="2"/>    <property name="targetid" value="1"/>    <property name="unittype" value="hero"/>   </properties>  </tile> </tileset> <tileset firstgid="65" name="201201121554224250" tilewidth="64" tileheight="64">  <image source="201201121554224250.png" width="321" height="242"/> </tileset> <layer name="ground" width="13" height="8">  <data encoding="base64" compression="zlib">   eJxd0NsKwkAMRdEB672KivggImpVBK2XVlv//8vcgRMIPiySyXQS0nVKKZcRtliF81C5xTE26KIO7ugpf2OPo3KrfdDHK3xT4qLcFBiEnoXe1Hq3Q4aTzuaBKyppQo8DZpj8zXaVYhPm2B4LTMOO3tvmn8M+fv/Uf8rDPr7jTTWfs0SLLzqKbahl4ndz/AA4bQ5u  </data> </layer> <layer name="units" width="13" height="8">  <data encoding="base64" compression="zlib">   eJxjYCAdWJKo3ooCPbZEqrej0B5S9dALAACEqgK7  </data> </layer> <objectgroup name="player" width="13" height="8"/> <objectgroup name="123" width="13" height="8">  <object name="123" x="125" y="209" width="79" height="61"/>  <object name="235" x="320" y="211">   <polyline points="0,0 64,26 45,39 0,45 -3,0 8,26 -2,36"/>  </object>  <object name="568" x="400" y="286" width="58" height="52">   <ellipse/>  </object>  <object name="123123" x="433" y="172">   <polyline points="0,0 63,31 8,50 -1,-2"/>  </object>  <object name="sdf" x="526" y="270">   <polygon points="0,0 -3,99 39,62 62,14 49,92"/>  </object>  <object name="wersf" gid="70" x="338" y="346"/> </objectgroup></map>

? ? tileset是Tile编辑器中的图块,一个图块是一个tileset,当地图中使用到一个tile时,会将该tile的数据加入到tileset中,每一个tile有一个id,多个图块的tile id是递增的。

? ? layer是Tile编辑器中的图层,一个地图有多个图层,一个图层是一个layer,图层中存放tile数据,并使用了编码和压缩格式,encoding,compression属性;

? ? objectgroup是Tile编辑器中的对象,一个objectgroup可以多个object,object有多种类型:polyline、ellipse、polygon等等,它们有不同的属性。

? ? ?

三、TiledMap类结构

com.badlogic.gdx.maps.tiled 包下类结构


libgdx学习之TiledMap(1)
?

TiledMap:继承Map类,表示整个tiledmap对象;

TiledMapTileSet:对应tmx文件中的图块,一个图块为一个TiledMapTileSet;

TiledMapTile:对应图块中的一个块,多个TileMapTile组成一个TiledMapTileSet;

TiledMapTileLayer:继承MayLayer类 对应tmx文件中的一个图层;

TiledMapTileSets:一个map中用到的所有TiledMapTileSet;

?

下面准备写一下TmxMapLoader和TiledMapRenderer

?

参考资料:https://code.google.com/p/libgdx/wiki/GraphicsTileMaps

? ? ??

?

?

热点排行