CCTMXTiledMap类是用TMX文件名来初始化的,然后作为子节点被添加到当前层中
下一步是通过使用tileMap的layerNamed方法和在Tiled中应用过的层命名"walls",来获取CCTMXLayer(也就是之前在Tiled中添加的游戏事件层),我们通过第四行  可以将地图中的砖块层隐藏掉
好了   运行程序 我们可以在手机上看到  地图已经显示了  但是你还不能去操作

接下来 我们需要判断  是否按中了问号方块
我们先将按下的坐标  转换为tmx地图的坐标
- CCPoint MainScene2::tilePosFromLocation(CCPoint touchpoint, 
 -         CCTMXTiledMap *map) { 
 -      
 -     CCPoint point = ccpSub(touchpoint, map->getPosition()); 
 -  
 -      
 -     point.x = (int) (point.x / map->getTileSize().width); 
 -     point.y = (int) ((map->getMapSize().height * map->getTileSize().height 
 -             - point.y) / map->getTileSize().height); 
 -  
 -     return point; 
 - } 
 
转换后的坐标就类似于   如图

- void MainScene2::ccTouchEnded(CCTouch *pTouch, CCEvent *pEvent) { 
 -  
 -     CCNode *node = getChildByTag(TargetMap); 
 -     CCTMXTiledMap *map = (CCTMXTiledMap*) node; 
 -  
 -     CCPoint touchpoint = CCDirector::sharedDirector()->convertToGL( 
 -             pTouch->getLocationInView()); 
 -     CCPoint mappoint = tilePosFromLocation(touchpoint, map); 
 -     CCLog("mappoint.x=%f,mappoint.y=%f", mappoint.x, mappoint.y); 
 -  
 -     bool isTouchOnWall = false; 
 -  
 -     CCTMXLayer *maplayer = map->layerNamed("walls"); 
 -     int tileGID = maplayer->tileGIDAt(mappoint); 
 -  
 -     CCLog("tileGID=%i", tileGID); 
 -     if (tileGID != 0) { 
 -         CCDictionary *properties = map->propertiesForGID(tileGID); 
 -         if (properties) { 
 -             CCString *isQuesWall = (CCString*) (properties->objectForKey( 
 -                     "isQues")); 
 -             isTouchOnWall = isQuesWall->boolValue() == true; 
 -         } 
 -     } 
 -  
 -     CCLabelTTF *label=(CCLabelTTF*)(getChildByTag(TargetLabel)); 
 -     if(isTouchOnWall){ 
 -         label->setString("按下问号砖块"); 
 -     }else{ 
 -         label->setString("未按到问号砖块"); 
 -     } 
 - } 
 
首先 我们来解释下上面的代码
3-4行:通过tag 获取CCTMXTiledMap节点;
6行:获取按下的坐标点 并转换为以左下角为原点的坐标;
8行:将按下的坐标 转换为tmx坐标地图
11行:用于存储是否按到了问号砖块
13行:获取tmx地图集中的walls层
14行:获取按下坐标所对应的瓷砖的gid (利用CCTMXLayer的tileGIDAt方法,你可以获取指定坐标上瓷砖的GID编号。)
18行:CCTMXTiledMap有一个叫做propertiesForGID方法,如果指定GID编号的瓷砖附带属性的话,此方法会返回一个CCDictionary字典。这个NSDictionary字典包含了在Tiled中为瓷砖添加的属性。字典的键/值都是用CCString对象存储的。
    
        
            |    CCDictionary的每一个属性都可以通过它的valueForKey方法来获取,返回的是一个CCString对象。要从一个CCString对象中获取布尔值,你可以使用CCString的boolValue方法;而要获取整数或者浮点数,你可以使用CCString的intValue或者floatValue方法。 | 
        
    
如果你需要在地图上修改单个瓷砖,你可以使用removeTileAt和setTileGID这两个方法。在游戏过程中,前者会移除指定层上的瓷砖,后者则会替换指定层上瓷砖:
- maplayer->removeTileAt(mappoint); 
 - maplayer->setTileGID(tileGID,mappoint); 
 
-------------------------
map->getTileSize():当个瓷砖的大小
map->getMapSize():指横竖瓷砖的块数
滚动瓷砖地图