小滿(bill man)個人原創,歡迎轉載,轉載請注明地址,小滿(bill man)的專欄地址http://blog.csdn.net/bill_man
之前的瓦片地圖集那篇當中講解過地圖有關類CCTMXTiledMap,但是還不夠詳細,在進行完一系列和該類有關的實例編寫和講解后,覺得有必要把CCTMXTiledMap補充進基礎知識部分。首先看api

可以看到,CCTMXTiledMap繼承于CCNode,這樣addchild等cocos2d-x中的基本類都可以使用。
首先來看聲明及初始化CCTMXTiledMap
CCTMXTiledMap?*map?=?CCTMXTiledMap::tiledMapWithTMXFile("iso-test-zorder.tmx");
很簡單,參數就是通過Tiles工具生成的.tmx文件(這個工具及其用法請看之前的瓦片地圖集那一節,這里就不再贅述了)。如果初始化了一個地圖,我們就可以通過addChild(map,?0,?kTagTileMap)把它加入到我們的層次和場景中,然后要在該場景中獲得這個地圖實例,我們可以通過CCTMXTiledMap*?map?=?(CCTMXTiledMap*)?getChildByTag(kTagTileMap)來獲得。
CCTMXTiledMap中的每一個tile都是CCSprite類型的,但是這個CCSprite并不是一直存在,而是當我們的程序中需要控制一個圖素時(更改圖素等),我們通過以下這個語句獲得圖素的CCSprite:
CCSprite?*newadd?=?layer->tileAt(aimmapindex);
參數就是圖素的橫縱坐標索引值,獲得這個CCSprite后,我們就可以控制這個CCSprie旋轉,縮放,或者是給他掛上各種Action(通過runAction)
我們可以通過map->getMapSize().width和map->getMapSize().height獲得地圖橫縱的圖素個數。
我們可以通過map->getTileSize().width和map->getTileSize().height獲得地圖圖素的寬高。
我們可以通過map->getContentSize().width和map->getContentSize().height獲得整體地圖的寬高。但是這個有個問題,就是當我們進行整個的地圖縮放的時候,這個寬高值不會變化,我們必須通過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");
int?mv?=?mvalue->toInt();
~~~
獲得的是個鍵值對,然后把它轉變為我們需要的類型。
如有錯誤之處,希望大家多多指正
- 前言
- (1)--HelloWorld
- (2)--重要概念及Test例子結構
- (3)--動作(CCAction)
- (4)--觸屏事件
- (5)--動作管理
- (6)--場景間切換效果
- (7)--CCProgressTimer
- (8)--場景特效
- (9)--粒子系統
- (10)--運動中的加速度效果
- (11)--拖動間隱效果
- (12)--圖形繪制
- (13)--內存回收機制
- (14)--菜單項
- (15)--CCOrbitCamera
- (16)--LayerColor
- (17)--瓦片地圖集
- (18)--Lable
- (19)--物理引擎box2d(1)
- (20)--物理引擎box2d(2)
- (21)--精靈類
- (22)--動畫類
- (23)--其他(屏幕旋轉,schedule,系統語言)
- (24)--音樂音效
- (25)--CCRenderTexture
- (26)--其他(游戲存檔,切換高清,圖片處理)
- (27)--CCMutableArray
- (28)--CCTMXTiledMap
- (29)-cocosBuilder
- (30)2.1新特性之CCClippingNode
- (31)2.1新特性CCPhysicsSprite
- (32)-cocos2d-x &amp; javascript跨平臺初體驗