COCOS-Tiled地图类

前端之家收集整理的这篇文章主要介绍了COCOS-Tiled地图类前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

一、TMXTiledMap类

cocos2dx提供了TMXTiledMap类来管理tiled瓦片地图,主要包括地图层、瓦片信息等,其主要方法属性如下:

class CC_DLL TMXTiledMap : public Node
{

    // 使用.tmx格式的文件创建瓦片地图
    static TMXTiledMap* create(const std::string& tmxFile);
  
/**
 * 获取瓦片地图的属性信息
 **/
    // 获取瓦片地图的指定名称属性值
    Value getProperty(const std::string& propertyName) const;
    // 获取瓦片地图的所有属性(键-值对)
    void setProperties(const ValueMap& properties); // 可以修改属性
    ValueMap& getProperties();
  
    // 获取瓦片地图(单位:瓦片数量)
    void setMapSize(const Size& mapSize);
    Size& getMapSize() const;
    // 获取单个瓦片的尺寸(单位:像素)
    void setTileSize(const Size& tileSize);
    Size& getTileSize() const;
  
    // 通过GID获取图块的属性,返回Value字典
    // 其实返回的是:ValueMap,即(键-值对)
    Value getPropertiesForGID(int GID) const;
  
/**
 * 获取地图层、对象层
 **/
    // 获取指定名称的地图层 TMXLayer
    TMXLayer* getLayer(const std::string& layerName) const;
  
    // 获取指定名称的对象层 TMXObjectGroup
    TMXObjectGroup* getObjectGroup(const std::string& groupName) const;
    // 获取瓦片地图的所有对象层,返回对象数组 Vector<TMXObjectGroup*>
    void setObjectGroups(const Vector<TMXObjectGroup*>& groups);
    Vector<TMXObjectGroup*>& getObjectGroups() const;
	
    // 瓦片地图的尺寸,以瓦片数量为单位
    Size _mapSize;
    // 瓦片的尺寸,以瓦片像素为单位
    Size _tileSize;
};

二、TMXLayer类

TMXLayer类管理tiled的地图层,包含该地图层中的每个瓦片的信息,而每一个瓦片都被表示成精灵,其主要方法属性如下:

class CC_DLL TMXLayer : public SpriteBatchNode 
{
/**
 * 获取地图层的属性信息
 **/  
    // 获取地图层的名字
    void setLayerName(const std::string& layerName); // 可以重新设置地图层名字
    std::string& getLayerName();
  
    // 获取地图层的propertyName属性值
    Value getProperty(const std::string& propertyName) const;
    // 获取地图层的所有自定义属性字典(键-值对)
    void setProperties(const ValueMap& properties);
    ValueMap& getProperties();
  
    // 获取地图层尺寸,一般等于瓦片地图的尺寸(单位:瓦片数量)
    void setLayerSize(const Size& size);
    Size& getLayerSize() const;
    // 设置瓦片尺寸的大小,一般与瓦片地图的瓦片尺寸是一样的(单位:像素)
    void setMapTileSize(const Size& size);
    Size& getMapTileSize() const;
  
/**
 * 对地图层的瓦片进行操作
 **/
    // 获取指定tile坐标的瓦片(Sprite)
    Sprite* getTileAt(const Vec2& tileCoordinate);
  
    // 可通过调用如下方法对瓦片精灵进行删除:
    void removeTileAt(const Vec2& tileCoordinate);
    void removeChild(Node* child,bool cleanup) override;
  
    // 获取指定tile坐标的瓦片对应的OpenGL坐标位置
    Vec2 getPositionAt(const Vec2& tileCoordinate);
  
    // 设置指定tile坐标的瓦片,将其图片变为GID的图块。
    void setTileGID(uint32_t gid,const Vec2& tileCoordinate);
  
    // 获取指定tile坐标的瓦片所使用的图块的GID。
    uint32_t getTileGIDAt(const Vec2& tileCoordinate);
	
    // 地图层的名字
    std::string _layerName;
    // 地图层的尺寸,以瓦片数量为单位
    Size _layerSize;
    // 地图层的瓦片的尺寸,以瓦片像素为单位
    Size _mapTileSize;
};

三、TMXObjectGroup类

TMXObjectGroup类用于管理tiled地图中特殊的地图层,即对象层,包括所有的对象及其所有的属性,而每一个对象的所有属性被存储为ValueMap键-值对映射,其主要方法属性如下:

class CC_DLL TMXObjectGroup : public Ref
{
/**
 * 获取对象层的属性信息
 **/  
    // 获取对象层的名称
    void setGroupName(const std::string& groupName); // 可以重新设置对象层名称
    std::string& getGroupName();
  
    // 获取对象层的propertyName属性值
    Value getProperty(const std::string& propertyName) const;    
    // 获取对象层所有属性(键-值对)
    void setProperties(const ValueMap& properties);
    ValueMap& getProperties();
  
    // 获取对象层指定的objectName对象,其所有属性被存储为ValueMap(键-值对)
    ValueMap getObject(const std::string& objectName) const;
    // 获取对象层的所有对象
    void setObjects(const ValueVector& objects);
    ValueVector& getObjects();
	
	// 对象层的名称
    std::string _groupName;
	// 所有的对象
    ValueVector _objects;
};
原文链接:https://www.f2er.com/cocos2dx/343884.html

猜你在找的Cocos2d-x相关文章