tiledmap入门2---tmx文件解析

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wade333777/article/details/82706898

一、元素解析

1. map地图信息

    <map version="1.0" tiledversion="1.1.6"   
    orientation="orthogonal" 
    renderorder="right-down" 
    width="13" height="13" 
    tilewidth="32"  tileheight="32" 
    infinite="0" 
    nextobjectid="9">

orientation:地图视角
renderorder:地图坐标方向
width与height:多少个图块
tilewidth和tileheight:一个图块的大小


2. tileset图块信息

<tileset firstgid="3" name="enemy" 
tilewidth="32" tileheight="32" 
tilecount="256" columns="4">
  <image source="enemy.png" width="128" height="2048"/>
 </tileset>

firstgid:第一个图块的ID,每一个图块都有单独的ID,后面的图块ID依次加1,让图层里的元素引用
tilecount:在图块集合里所有图块的数量
columns:图块列数
image source:引用的原图片


3. layer图块层信息

 <layer name="floor" width="13" height="13">
  <data encoding="base64" compression="gzip">
   H4sIAAAAAAAAE2NkYGBgHMWjeBBjANKfHWSkAgAA
  </data>
 </layer>

这里主要看下data数据,先进行了gzip压缩,然后进行base64加密,在扩展知识里详细解释


4. 对象层信息

<objectgroup name="object">
  <object id="1" name="npc0" type="npc" x="128" y="320" width="32" height="32">
   <properties>
    <property name="image" value="npc.png"/>
    <property name="rectX" value="0"/>
    <property name="rectY" value="0"/>
   </properties>
  </object>
  <object id="2" type="teleport" x="192" y="32" width="32" height="32">
   <properties>
    <property name="heroTileCoordX" value="2"/>
    <property name="heroTileCoordY" value="11"/>
    <property name="image" value="down_floor.png"/>
    <property name="targetMap" value="0"/>
   </properties>
  </object>
 </objectgroup>

注意对象的x,y是每一个图块的宽高*该图块所在的位置
property:对象的属性,这里可以按照需求无限扩展


二、扩展知识

1. 什么是base64?
Base64一般用于在HTTP协议下传输二进制数据,由于HTTP协议是文本协议,所以在HTTP协议下传输二进制数据需要将二进制数据转换为字符数据。然而直接转换是不行的。因为网络传输只能传输可打印字符。什么是可打印字符?在ASCII码中规定,0~31、128这33个字符属于控制字符,32~127这95个字符属于可打印字符,也就是说网络传输只能传输这95个字符,不在这个范围内的字符无法传输。那么该怎么才能传输其他字符呢?其中一种方式就是使用Base64。

Base64的原理其实很简单,首先,需要准备一个包含64个字符的表格,0~63分别对应了唯一一个字符,比如18对应的是S。
然后,对二进制数据进行处理,每3个字节一组,一共3x8=24bit,将这24bit划分为4组,每组正好6个bit,6bit的数据刚好可以表示0~63的范围,也就可以对应上表的64个字符。这样我们就得到了4个数字作为索引,然后查表获得相应的4个字符,就得到了编码后的字符串。

(1) 字符串”Ow!”被拆分成3个8位的字节(0x4F、0x77、0x21)。

(2) 这3个字节构成了一个24位的二进制01001111 01110111 00100001。

(3) 这些被划分为一些6位的序列010011、110111、011100、1000001.

(4) 每个6位值都表示了从0~63之间的数字,对应base64字母表中的64个字符之一。得到的base64编码字符串是4个字符的字符串“T3ch”。然后就可以通过线路将这个字符串作为“安全的”8位字符传送出去,因为只用了一些移植性最好的字符(字母、数字等)。

2. gzip
减少文件大小有两个明显的好处,一是可以减少存储空间,二是通过网络传输文件时,可以减少传输的时间。gzip 是在 Linux 系统中经常使用的一个对文件进行压缩和解压缩的命令,既方便又好用。

猜你喜欢

转载自blog.csdn.net/wade333777/article/details/82706898