6.6.2 地图图层类CCTMXLayer
在Tile Map Editor当中,存在两种图层。一个为砖块拼接的图层,另一个是物体层。经过前面的介绍,我们也得知在Cocos2D-X引擎当中同样提供了两个独立的类来对应这两种层次。下面就来看看这两个类都提供给了开发者哪些公共成员函数。
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)
上述代码6-4列出了类CCTMXLayer的所有公共成员方法。其中有几个是读者将来会经常用到的。它们都是与拼接图层的数据有关的函数。因为图层对象是在创建地图对象时由引擎自动创建的,所以读者在上述代码中并没有看到类CCTMXLayer的创建函数。只有释放函数releaseMap,它是用来释放当前图层资源的。只有当此图层不再进行修改时,才可以调用这个方法。否则,在其被释放之后再进行修改,就无从下手了。函数tileAt将会返回一个砖块对象,具体的图块对象是通过参数中传递的位置来确定的。返回的砖块对象是在调用此方法时新生成的。
这是读者需要留意的地方。在开始创建图层时并不会为每个砖块都生成一个精灵对象,只有当开发者调用此方法来获得砖块对象时,才会创建。如此设计的原因无非就是为了减少内存的创建,节省运行空间。其他的函数就不逐一介绍了。它们都很简单,读者通过注释就可以明白。