cocos2d-x 学习笔记之Tiled Map地图使用时的一些问题

这篇博客主要介绍了在cocos2d-x 3.x版本中使用TiledMap时遇到的问题,尤其是对象层载入的语法变化。在2.x版本中,CCTMXObjectGroup的objectNamed函数返回CCDictionary,但在3.x中改为返回ValueMap。文章提供了3.x版本中修正后的代码,并简要提到了Map容器的几个关键函数,如insert和at。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于TiledMap地图相关的知识这里就不再具体展开说了, 这里主要写一些我在cocos2dx 3.x中使用该地图时遇到的一些问题,这些问题也是cocos2dx 3.x 与2.x中更新所带来的。
下面主要讲讲Tiled Map对象层在cocos2dx中载入时遇到的问题,由于刚开始接触,我是从网上找的一些教程在学习,很可惜,现在找到的一般都是2.x版本的,所以在该对象层的载入上很多语法在3.x中是会报错的。
看下面这段代码:

/*载入tiledmap地图*/
CCTMXTiledMap* map = CCTMXTiledMap::create("level01.tmx");
/* 加载对象层 */
CCTMXObjectGroup* objGroup = map->objectGroupNamed("objects");

/* 加载玩家坐标对象 */
CCDictionary* playerPointDic = objGroup->objectNamed("PlayerPoint");
float playerX = playerPointDic->valueForKey("x")->floatValue();
float playerY = playerPointDic->valueForKey("y")->floatValue();

上面的代码是cocos2d-x 2.x版本中载入tiledmap地图对象层的方法。CCTMXObjectGroup对象存放了对象层的所有对象,objectNamed函数获取指定名称的对象层,在2.x版本中,该函数返回的是CCDictionary*类型的数据,但是在3.x版本中已经不再使用这些数据类型,转而使用各种容器来代替这些,比如CCDictionary在3.x中就用Map容器来替代,所以在3.x中objectNamed函数返回的类型是ValueMap。所以上述载入的代码在3.x中势必会报错,下面给出3.x中该代码的修改。
CCTMXObjectGroup* objGroup = map->objectGroupNamed(“objects”);

/* 加载玩家坐标对象 */
auto playerPointDic = objGroup->objectNamed("PlayerPoint");
float playerX = playerPointDic.at("x").asFloat();
float playerY = playerPointDic.at("y").asFloat();

这里列举MAP容器的几个主要函数:
insert(key,value):向Map中插入一个对象
at(key):返回Map中关键字为key的对象
asFloat();将指定数据转化成浮点数据类型

关于Map容器其他的一些用法,我们一起自行百度吧~~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值