cocos2d-x 2D砖块地图实现技术之一

学习cocos2d-x没有好的学习方法,直接做项目,看效果。不看原理,不分析源码。我才明白都是在培训学校养成的坏习惯~

辛辛苦苦地在项目中用了TMLMap,现在回头看看,有人写过这么好的基础知识的介绍,哎,如果当时看了这些基础,那效率肯定很快了~

现在在看这些权当复习吧,总结吧。我表达能力欠佳,想说的都在这了~

 

6.6.1  砖块地图类CCTMXTiledMap(1)

Cocos2D-X引擎专门设计了一个类用来读取与解析TMX文件。此TMX文件就是前面列举的Tile Map Editor项目工程文件,其中包含了地图拼接数据。引擎当中对应的类,就是类CCTMXTiledMap。它继承自CCNode基类。此类为开发者提供了两个静态的创建函数。

1.  //根据一个TMX文件来创建一个背景地图  

2.  static CCTMXTiledMap *  create (const char *tmxFile)  

3.  //根据一个TMX文件以及资源路径,来创建一个背景地图  

4.  static CCTMXTiledMap *  create (const char *tmxString, const char *resourcePath) 

上面的两个函数并有太大的区别。因为拼接地图所用的图片资源信息也同样保存在TMX文件当中,所以在代码中,开发者更习惯只有一个参数的简洁函数。根据引擎的说明文档,类CCTMXTiledMap提供了对TMX文件的解析以及如何绘制的功能。所谓的解析,就是能够将TMX文件中的地图信息,加载为引擎可用的对象。至于如何绘制,就是在内存当中将拼图信息以游戏画面组成方式保存。CCTMXTiledMap几乎支持Tile Map Editor中所有的功能。它能够支持三种矩形、菱形、正六边形的拼接方式。同时,还支持物体层、物体以及属性功能。下面列出了类CCTMXTiledMap具体的实现技术。

 

每个砖块元素都会被当作精灵对象来处理。

每个地图中的砖块,只有在需要的时候才会被创建。这是为了节省内存的开销。只有在开发者调用类CCLayer的函数tileAt之后,砖块对象才会被创建。

每一个砖块元素都支持旋转、移动、伸缩、变色以及更改透明度。这正是将砖块元素视为精灵对象而获得的自由。

在引擎运行当中,开发者也可以删除或者添加砖块元素。

砖块的z坐标,用于控制图块之间的遮挡关系。它也是可以在引擎运行期间修改的。

每一个砖块都存在锚点。它是绘制时用于对齐的坐标点,默认为(0,0)。

每个地图对象也同样存在锚点,默认为(0,0)。

每一个TMX中的图层都会成为地图对象的子节点。

每一个图层都将使用纹理图片集合的处理方式。

地图中砖块元素的纹理图片将会被加载在CCTextureCache当中。

 

每一个砖块元素都有一个唯一的标志数值。

每一个砖块元素也拥有一个唯一的Z坐标值。此坐标从左上角开始,数值为"1",到右下角最大值截止。

每一个物体层中的对象都将会被放置在一个动态数组当中。

对象的所有属性将会保存在一个字典容器当中。

引擎中支持所有Tile Map对象的属性:

地图、(CCTMXTiledMap:publicCCNode)

图层、(CCTMXLayer:publicCCSpriteBatchNode)

物体层(CCTMXObjectGroup:publicCCObject)

以及对象。

除了上面支持的功能,读者更应该注意下面TMX文件的使用限制。

当前的版本仅支持一个图层对应一个图块纹理图片的方式。

不支持嵌入式的纹理图片。

仅支持XML格式的导出文件,不支持JSON格式的文件。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值