TiledMap使用笔记

来源:互联网 发布:python 打开cmd窗口 编辑:程序博客网 时间:2024/05/29 04:06

(注意TiileMap中每一层只能使用一种图块)

(TiledMap中的坐标是以左上角为原点,右边是x周,下边为y轴,但是在获取对象在地图中的坐标的时候,会自动转成以左下角为原点的坐标系

[plain] 

  1. static CCTMXTiledMap * create (const char *tmxFile);

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

    [plain]
    1. static CCTMXTiledMap * create (const char *tmxString, const char *resourcePath);

      CCTMXTiledMap的成员函数:
      [plain]
      1. //得到地图背景的尺寸
      2. virtual const CCSize & getMapSize (void)
      3. //设置地图背景的尺寸
      4. virtual void setMapSize (const CCSize &var)
      5. //得到地图背景中砖块元素的尺寸
      6. virtual const CCSize & getTileSize (void)
      7. //设置地图背景中砖块元素的尺寸
      8. virtual void setTileSize (const CCSize &var)
      9. //获得物体层中所有对象
      10. virtual CCArray * getObjectGroups (void)
      11. //设置物体层的容器
      12. virtual void setObjectGroups (CCArray *var)
      13. //获得地图的属性
      14. virtual CCDictionary * getProperties (void)
      15. //设置地图属性
      16. virtual void setProperties (CCDictionary *var)
      17. //构造函数
      18. CCTMXTiledMap ()
      19. //析构函数
      20. virtual ~CCTMXTiledMap ()
      21. //一个初始化函数
      22. bool initWithTMXFile (const char *tmxFile)
      23. //另一个初始化函数
      24. bool initWithXML (const char *tmxString, const char *resourcePath)
      25. //根据图层的名字,来获得图层
      26. CCTMXLayer * layerNamed (const char *layerName)
      27. //根据物体层的名字,来获得物体层
      28. CCTMXObjectGroup * objectGroupNamed (const char *groupName)
      29. //根据属性的名字,来获得数值
      30. CCString * propertyNamed (const char *propertyName)
      31. //根据GID,获得属性字典
      32. CCDictionary * propertiesForGID (int GID)

         

         

         

         

        Cocos2d-x 瓦片地图图层类CCTMXLayer


        这篇文章为大家介绍瓦片地图的图层:-x中的图层分为2种,一个为砖块拼接的图层,另一个是物体层。我们这篇将给大家介绍2种图层的公有方法:
        代码如下: [plain]
        1. //返回图层尺寸的大小
        2. virtual const CCSize & getLayerSize (void)
        3.  
        4. //设置图层尺寸的大小
        5. virtual void setLayerSize (const CCSize &var)
        6.  
        7. //返回砖块尺寸的大小
        8. virtual const CCSize & getMapTileSize (void)
        9.  
        10. //设置砖块尺寸的大小
        11. virtual void setMapTileSize (const CCSize &var)
        12.  
        13. //返回砖块属性信息
        14. virtual CCTMXTilesetInfo * getTileSet (void)
        15.  
        16. //设置砖块属性信息
        17. virtual void setTileSet (CCTMXTilesetInfo *var)
        18.  
        19. //返回图层属性字典(包含了所有属性)
        20. virtual CCDictionary * getProperties (void)
        21.  
        22. //设置图层属性
        23. virtual void setProperties (CCDictionary *var)
        24.  
        25. //构造函数
        26. CCTMXLayer ()
        27.  
        28. //析构函数
        29. virtual ~CCTMXLayer ()
        30.  
        31. //初始化函数,参数为:砖块配置对象,图形配置对象,地图配置对象
        32. bool initWithTilesetInfo (CCTMXTilesetInfo *tilesetInfo, CCTMXLayerInfo *layerInfo, CCTMXMapInfo *mapInfo)
        33.  
        34. //释放图层中砖块的拼接信息
        35. void releaseMap ()
        36.  
        37. //返回指定位置的砖块对象
        38. CCSprite * tileAt (const CCPoint &tileCoordinate)
        39.  
        40. //返回指定位置砖块对象的ID
        41. unsigned int tileGIDAt (const CCPoint &tileCoordinate)
        42.  
        43. //返回指定位置砖块对象的ID
        44. unsigned int tileGIDAt (const CCPoint &tileCoordinate, ccTMXTileFlags *flags)
        45.  
        46. //设置指定位置砖块对象的ID
        47. void setTileGID (unsigned int gid, const CCPoint &tileCoordinate)
        48.  
        49.  
        50. //设置指定位置砖块对象的ID
        51. void setTileGID (unsigned int gid, const CCPoint &tileCoordinate, ccTMXTileFlags flags)
        52.  
        53. //移除指定位置砖块对象
        54. void removeTileAt (const CCPoint &tileCoordinate)
        55.  
        56. //返回指定坐标的地图位置
        57. CCPoint positionAt (const CCPoint &tileCoordinate)
        58.  
        59. //返回指定属性数值
        60. CCString * propertyNamed (const char *propertyName)
        61.  
        62. //创建图层中的砖块
        63. void setupTiles ()
        64.  
        65. //得到图层的名字
        66. const char * getLayerName ()
        67.  
        68. //设置图层的名字
        69. void setLayerName (const char *layerName)

           

  2. TMXTiledMap *openMap = TMXTiledMap::create("hush_map.tmx");
    openMap->setAnchorPoint(Point(0,0));
    //openMap->getMapSize().width瓦片地图横向有多少个瓦片
    //openMap->getTileSize().width每一个瓦片的宽度
    log("%f", openMap->getTileSize().width*openMap->getMapSize().width);
    // openMap->setPosition(Point(0,0));
    //根据对象名字找对象
    /*TMXObjectGroup *objects = openMap->getObjectGroup("Objects");
    auto player = objects->getObject("player");
    int player_x = player["x"].asInt();
    int player_y = player["y"].asInt();
    auto role = Sprite::create("monster.png");
    role->setPosition(Point(player_x,player_y));
    role->setScale(0.01);
    auto role_action = ScaleTo::create(2.0f,1);
    role->runAction(role_action);
    this->addChild(role,5);*/


    //openMap->setPosition(Point(visibleSize.width/2,visibleSize.height/2));


    //遍历地图中的对象
    //获取对象组
    TMXObjectGroup *objects = openMap->getObjectGroup("Objects");
    ValueVector objectsValue = objects->getObjects();
    float x, y, w, h;
    for each (auto object in objectsValue)
    {
    ValueMap valueMap = object.asValueMap();


    x = valueMap.at("x").asFloat();
    y = valueMap.at("y").asFloat();
    w= valueMap.at("width").asFloat();
    h = valueMap.at("height").asFloat();
    log("x=%f,y=%f,w=%f,h=%f",x,y,w,h);
    }

    this->addChild(openMap);
0 0