cocos2d-x 2D砖块地图实现技术之三

来源:互联网 发布:烂泥情人知乎 编辑:程序博客网 时间:2024/05/01 09:27

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将会返回一个砖块对象,具体的图块对象是通过参数中传递的位置来确定的。返回的砖块对象是在调用此方法时新生成的。

这是读者需要留意的地方。在开始创建图层时并不会为每个砖块都生成一个精灵对象,只有当开发者调用此方法来获得砖块对象时,才会创建。如此设计的原因无非就是为了减少内存的创建,节省运行空间。其他的函数就不逐一介绍了。它们都很简单,读者通过注释就可以明白。

原创粉丝点击