当前位置 : 主页 > 手机开发 > 其它 >

cocos2dx 3.3 TMX系列简单分析

来源:互联网 收集:自由互联 发布时间:2021-06-13
位置:coco2d/2d/CCTMX 关于TiledMap 一般使用Tile工具来制作地图 生成tmx文件,map包含多个layer、object,layer内包含tile,tile存储为gid tmx文件其实最终也是xml形式的 从CCTMXXMLParser入手 TMXLayerIn
位置:coco2d/2d/CCTMX


关于TiledMap

一般使用Tile工具来制作地图
生成tmx文件,map包含多个layer、object,layer内包含tile,tile存储为gid
tmx文件其实最终也是xml形式的


从CCTMXXMLParser入手

TMXLayerInfo 层信息,包含各种附加属性值,以及基本属性,比如name、size、offset、visible等
TMXTilesetInfo 瓦片集的各种信息,可以认为是丢进tile里的那张png对应的各种信息,包括tileSize、sourceImage等


TMXMapInfo 实际解析类,包含地图的全部信息
从tmx或xml读取相关信息,并解析成地图
入口都是create系列,然后进入internalInit初始化一些信息,然后开始解析parseXMLFile
tmx其实也是xml形式的,所以统一解析xml,设置SAXDelegator,进入SAXParser内解析
内部利用tinyxml2解析xml文件,获取各种数据,遍历文件,然后通过SAXDelegator回到TMXMapInfo内对应的处理函数startElement endElement textHandler
map 地图
tileset tile图相关信息
layer 地图内的层相关信息,也是实际地图信息,内部data为base64加密并zip压缩,在end里解析data,先解密base64,然后解压,存入TMXLayerInfo内
objectgroup 对象层相关信息
其他还有各种属性、几何图形信息等,可对应相关代码及tmx文件查看


文件读取解析完成了,下一个


实际呈现部分

CCTMXTiledMap 负责将数据图像化 class TMXLayerInfo; class TMXTilesetInfo; class TMXMapInfo; 上面这几个前面都有了,就是保存各种信息的 class TMXLayer; 这个layer继承自SpriteBatchNode,关于SpriteBatchNode相关的信息就不多说了,基本就是,这样绘制效率会高很多 TMXLayer依然从create入手,进入initWithTilesetInfo,先添加image到TextureCache,然后SpriteBatchNode,然后设置各种layer信息,再之后就暂时断了 回到TMXTiledMap,继续从create入手,先TMXMapInfo解析,然后进入buildWithMapInfo,获取各种mapinfo,然后对各个层做处理parseLayer,然后add节点 parseLayer内创建TMXLayer,然后走setupTiles,里面先开启了抗锯齿,然后appendTileForGID依次添加tile,每一块tile都是一个sprite
网友评论