CCTMXTiledMap knows how to parse and render a TMX map. It adds support for the TMX tiled map format used by http://www.mapeditor.org It supports isometric, hexagonal and orthogonal tiles. It also supports object groups, objects, and properties. Features:
- Each tile will be treated as an CCSprite
- The sprites are created on demand. They will be created only when you call “layer->tileAt(position)”
- Each tile can be rotated / moved / scaled / tinted / “opaqued”, since each tile is a CCSprite
- Tiles can be added/removed in runtime
- The z-order of the tiles can be modified in runtime
- Each tile has an anchorPoint of (0,0)
- The anchorPoint of the TMXTileMap is (0,0)
- The TMX layers will be added as a child
- The TMX layers will be aliased by default
- The tileset image will be loaded using the CCTextureCache
- Each tile will have a unique tag
- Each tile will have a unique z value. top-left: z=1, bottom-right: z=max z
- Each object group will be treated as an CCMutableArray
- Object class which will contain all the properties in a dictionary
- Properties can be assigned to the Map, Layer, Object Group, and Object Limitations:
- It only supports one tileset per layer.
- Embedded images are not supported
- It only supports the XML format (the JSON format is not supported) Technical description: Each layer is created using an CCTMXLayer (subclass of CCSpriteBatchNode). If you have 5 layers, then 5 CCTMXLayer will be created, unless the layer visibility is off. In that case, the layer won’t be created at all. You can obtain the layers (CCTMXLayer objects) at runtime by:
- map->getChildByTag(tag_number); // 0=1st layer, 1=2nd layer, 2=3rd layer, etc…
- map->layerNamed(name_of_the_layer); Each object group is created using a CCTMXObjectGroup which is a subclass of CCMutableArray. You can obtain the object groups at runtime by:
- map->objectGroupNamed(name_of_the_object_group); Each object is a CCTMXObject. Each property is stored as a key-value pair in an CCMutableDictionary. You can obtain the properties at runtime by: map->propertyNamed(name_of_the_property); layer->propertyNamed(name_of_the_property); objectGroup->propertyNamed(name_of_the_property); object->propertyNamed(name_of_the_property);