Cocos2d-x   发布时间:2022-05-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了cocos2d-x初探学习笔记(28)--CCTMXTiledMap大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

小满(bill man)个人原创,欢迎转载,转载请注明地址,小满(bill man)的专栏地址http://blog.csdn.net/bill_man

之前的瓦片地图集那篇当中讲解过地图有关类CCTMXTiledMap,但是还不够详细,在进行完一系列和该类有关的实例编写和讲解后,觉得有必要把CCTMXTiledMap补充进基础知识部分。首先看api


可以看到,CCTMXTiledMap继承于CCNode,这样addchildcocos2d-x中的基本类都可以使用。

首先来看声明及初始化CCTMXTiledMap

CCTMXTiledMap*map=CCTMXTiledMap::tiledMapWithTMXFile("iso-test-zorder.tmx");

很简单,参数就是通过Tiles工具生成的.tmx文件(这个工具及其用法请看之前的瓦片地图集那一节,这里就不再赘述了)。如果初始化了一个地图,我们就可以通过addChild(map,kTagTileMap)把它加入到我们的层次和场景中,然后要在该场景中获得这个地图实例,我们可以通过CCTMXTiledMap*map=(CCTMXTiledMap*)getChildByTag(kTagTileMap)来获得。

CCTMXTiledMap中的每一个tile都是CCSprite类型的,但是这个CCSprite并不是一直存在,而是当我们的程序中需要控制一个图素时(更改图素等),我们通过以下这个语句获得图素的CCSprite

CCSprite*newadd=layer->tileAt(aimmapindeX);

参数就是图素的横纵坐标索引值,获得这个CCSprite后,我们就可以控制这个CCSprie旋转,缩放,或者是给他挂上各种Action(通过runAction

我们可以通过@H_739_53@map->getMapSize().width@H_739_53@map->getMapSize().height获得地图横纵的图素个数。

我们可以通过@H_739_53@map->getTileSize().width@H_739_53@map->getTileSize().height获得地图图素的宽高。

我们可以通过@H_739_53@map->getContentSize().width@H_739_53@map->getContentSize().height获得整体地图的宽高。但是这个有个问题,就是当我们进行整个的地图缩放的时候,这个宽高值不会变化,我们必须通过@H_739_53@map->getScale()获得缩放参数并把它乘以宽高及获得真实宽高。

关于地图的gid,我对gid的理解就是每个图素的索引,也就是说改变这个位置的gid值就改变了这个位置的图素图片,我们可以通过layer->tileGIDAt(ccp(mapindex.x,mapindex.y));来获得在某个位置的地图gid。并且可以通过layer->setTileGID(4,aimmapindeX);设置某个位置的gid值,其中第一个参数为要设置的gid,第二个参数是本位置的宽高索引。

Gid还有个用途就是获得地图的属性值,这个属性值是通过Tiles工具来设置,用法如下:

CCMutableDictionary<String,CCString*>*tileDic=map->propertiesForGID(tilegid);

CCString*mvalue=tileDic->objectForKey("conflict");

intmv=mvalue->toInt();

获得的是个键值对,然后把它转变为我们需要的类型。

如有错误之处,希望大家多多指正

大佬总结

以上是大佬教程为你收集整理的cocos2d-x初探学习笔记(28)--CCTMXTiledMap全部内容,希望文章能够帮你解决cocos2d-x初探学习笔记(28)--CCTMXTiledMap所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。