首页 > 代码库 > Cocos2d-X 3.x数据结构与2.x数据结构大致比较

Cocos2d-X 3.x数据结构与2.x数据结构大致比较

Cocos2d-X 3.x数据结构与2.x数据结构大致比较
 
在3.x里做2d横板过关游戏时,需要用到这些东西,网上大多数都是些2.x版本的教程,
一些东西已经可能大不相同了.
 

PointArray -> CCPointArray

翻开源码他是一个std::Vector<Vec2*>的类,他是为了记录一些点向量的集合

PointArray::create(ssize_t capacity); //表示长度

 

CC_SAFE_RETAIN 用到的时候让计数器安全-1
 
TMXTiledMap->CCTMXTiledMap
3.x 和 2.x的不同
     3.x 拥有一个ValueMap的地图数组 和Vector<TMXObjectGroup*>地图元素集合
     2.x 拥有一个 CCDictionary的地图数组和一个CCArray的地图元素集合
 
TMXObjectGroup->CCTMXObjectGroup
    3.x:TMXObjectGroup::getObjects返回ValueVector
    2.x:TMXObjectGroup::getObjects返回CCArray
 
Value VS CCArray & CCDictionary
    Value各种类是vector+map再一次封装:
     ValueVector->其实就是一个 CCArray里包含着CCDictionary里面是键值对
     ValueMap->CCDictionary里面包含一个字符串和一个对象
     ValueIntKey->整形和对象的map
     Value是一个联合体:
     int float double bool string char ValueVector ValueMap Value ValueIntKey
     并且Value重载了好多运算符,使用很方便
 
各种坑爹的宏让他们去死吧
     2.x:     CCARRAY_FOREACH(CCArray* arr,CCObject* ref);
     3.x:     for(auto ref : CCArray* arr )
     2.x:     CCDICT_FOREACH(CCDictionary * dic,CCDicElement* ele )
     3.x:     for(auto ele : ValueVector)
     这样做唯一的不足是auto自动推导类型可能不会有具体方法,
     如果有需要像键值对的就很恶心,比如需要获取键和值
     pElement.first.c_str()这样获取元素第一个参数的键
     pElement.second….获取元素第二个参数值
 
    虽然3.x的方法可能让人有时抓狂,不过习惯了反而觉着3.x确实比2.x安全高效
 
 

Cocos2d-X 3.x数据结构与2.x数据结构大致比较