一、元素解析

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码中规定,031、128这33个字符属于控制字符,32127这95个字符属于可打印字符,也就是说网络传输只能传输这95个字符,不在这个范围内的字符无法传输。那么该怎么才能传输其他字符呢?其中一种方式就是使用Base64。

Base64的原理其实很简单,首先,需要准备一个包含64个字符的表格,0~63分别对应了唯一一个字符,比如18对应的是S。
然后,对二进制数据进行处理,每3个字节一组,一共3×8=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 系统中经常使用的一个对文件进行压缩和解压缩的命令,既方便又好用。