1. CCTMXTiledMap类
特点如下:
- 每个TMXTiledMap都被当作一个精灵
- 这些精灵需要时被创建而且仅当调用layer->tileAt(position)时才会被创建
- 每个tile继承了精灵的特点,可以旋转/移动/缩放/着色/透明化
- Tiles可以在运行时添加或删除
- Tiles的z-order亦可在运行时修改
- 每个tile的锚点是(0,0)
- TMXTileMap的锚点是(0,0)
- TMX layers可以当作子节点添加
- TXM layers默认会设置一个别名
- Tileset图片可以在使用TextureCache时加入
- 每个tile都有一个唯一的tag
- 每个tile都有一个唯一的z值.左上(top-left): z=1, 右下(bottom-right): z=max z
- 每个对象组(object group)可以用作可变数组(MutaleArray)
- 对象类包含的属性都存储在一个字典(dictionary)中
- 属性可以赋值给地图(Map),层(Layer),对象属性(Object Group)以及对象(Object)
受限点:
- 每个layer只支持一个tileset
- 不支持嵌入式图片(Embedded images)
- 只支持XML格式(不支持JSON格式)
技术描述: 每个layer被创建成TMXLayer(继承自SpriteBatchNode)。 如果layer是可视的,那么如果你有5个layer,则5个TMXLayer被创建. 如果不可视,则layer根本不会被创建。 在运行时,可通过如下获取layers(TMXLayer objects):
- map->getChildByTag(tag_number); // 0=1st layer, 1=2nd layer, 2=3rd layer, etc...
- map->getLayer(name_of_the_layer); //name_of_the_layer layer名
每个对象组被创建成一个继承自MutableArray的TMXObjectGroup 运行时,可通过如下获取该对象组:
- map->getObjectGroup(name_of_the_object_group);//name_of_the_object_group 对象组名
每个object都是一个TMXObject
每个属性都通过key-value对存储在一个MutableDictionary里 运行时,可通过如下获取属性: map->getProperty(name_of_the_property);//name_of_the_property 属性名 layer->getProperty(name_of_the_property); objectGroup->getProperty(name_of_the_property); object->getProperty(name_of_the_property);
CCTMXTiledMap比较常用的成员函数:
获得和设置地图的尺寸
const CCSize & getMapSize(void);
void setMapSize(const CCSize &var)
获得和设置砖块的尺寸
const CCSize & getileSize(void);
void setTileSize(cosnt CCSize &var);
获得和设置地图的方向
const int getMapOrientation();
void setMapOrientation(int var);
设置和获得对象数组
CCArray * getObjectGroups();
Void setObjectGroups(CCArray *var);
获得和设置地图地属性
void setProperties(CCDictionary *var);
CCDictionary * getProperties(void);
/* 初始化方法(常用)*/
static CCTMXTiledMap* create(const char *tmxFile);
/** 通过名字获得地图中的层*/
CCTMXLayer* layerNamed(const char *layerName);
/** TMXObjectGroup 对象组,获得一个名字下的对象组*/
CCTMXObjectGroup* objectGroupNamed(const char *groupName);
/** 获得一个属性的值 */
CCString *propertyNamed(const char *propertyName);
/**获得地图中某个图块的所有对象(注意一个图块可能有多个对象) */
CCDictionary* propertiesForGID(int GID);
2. CCTMXLayer类(地图图层类)
//获得和设置图层尺寸的大小
virtual const CCSize & getLayerSize(void);
virtual void setLayerSize(const CCSize &var);
//获得和设置砖块尺寸
virtual const CCSize & getMapTileSize(void);
virtual void setMapTileSize(const CCSize &var);
//获得和设置砖块的属性
virtual CCTMXTilesetInfo * getTileSet(void);
virtual void setTileSet(CCTMXTilesetInfo *var);
//获得和设置图层属性字典
virtual CCDictionary *getProperties(void);
virtual void setProperties(CCDictionary *var);
//返回指定位置的砖块对象
CCSprite *tileAt(const CCPoint &tileCoordinate);
//返回指定位置的砖块的对象的ID
unsigned int tileGIDAt(const CCPoint &tileCoordinate);
//移除指定位置的砖块对象
void removeTileAt(const CCPoint& tileCoordinate);
//获得和设置图层名字
inline const char* getLayerName();
inline void setLayerName(const char *layerName);
3. CCTMXObjectGroup类(地图物体层(对象层))
//获得物体层的属性字典
virtual CCDictionary * getProperties(void);
//设置物体层的属性字典
virtual void setProperties(CCDictionary *var);
//获得物体层中的物体对象
virtual CCArray * getObjects(void);
//设置物体层中的物体对象
virtual void setObjects(CCArray *var);
//返回物体层的名字
inline const char* getGroupName();
//设置物体层的名字
inline void setGroupName(const char *groupName);
//获得指定属性的数值
CCString *propertyNamed(const char* propertyName);
//根据属性名字,返回属性字典
CCDictionary* objectNamed(const char *objectName);