前面的博文中我们提到了一个词典类CCDictionary,它和数组类CCArray共称Cocos2d-x两大常用数据结构,因为在项目中数组类CCArray我们使用的实在是太多了,因此这里补充一篇关于CCArray深入分析的博文,其中提到了一个很多新手可能没有使用过的类ccCArray类,CCArray内部其实都是通过调用该类实现的,值得我们注意。 【转载自偶...
首先,CCArray是不能使用new的方式创建的。其次,使用CCArray::array()创建的数组,即使这个数组已经是当前类的成员变量,也必须要做一次retain,否则的话在创建数组的函数返回的时候,CCArray就会被直接释放掉了。由于这个问题也无法通过编译时候暴露出来,而且在objc中创建自动释放的NSArray类型的成员变量的时候是不需要reta...
m_actionRunning =CCRepeatForever::create(CCAnimate::create(animation)); m_actionRunning->retain();// init jumpUpActionanimFrames = CCArray::create();for(inti=0; i<4; i++) { CCString* name = CCString::createWithFormat("runnerJumpUp%d.png",i); CCSpriteFrame* frame = CCSpriteFrameCache...
1.每一个CCNode的children本质就是一个CCArray,这样我们就可以通过getChildren()获得array,进行操作! 2.对于CCSequence如果只有到运行时才能知道有个少个动作时,我们就可以声明一个CCArray然后将动作addObject(),最后通过一个array来创建CCSequence,例如下面这段代码: C++ //所有的路径节点 CCArray *array = CCArray...
示例1: CCPoint ▲点赞 9▼ CCArray * GameBoard::getNeighbors(Bubble * bubble){ CCArray * outArray = CCArray::create(); outArray->retain();//leftif(bubble->col-1>=0) outArray->addObject(newCCPoint(bubble->col-1, bubble->row));//rightif(bubble->col+1< BUBBLE_COL) outArray->...
CCObject* obj = NULL; CCARRAY_FOREACH(arr,obj) { //your code } 例子2 : CCNode的成员函数onEnter()中,有一段代码是遍历此节点的所有的子节点是否正在运行,代码如下,只需要看中文注释那几行代码即可 voidCCNode::onEnter() {//fix setTouchEnabled not take effect when called the function in onEnt...
CCArray(unsigned int capacity);};也就是说CCArray中包含了ccArray。我们再看看ccArray的定义 typedef struct _ccArray { unsigned int num, max;CCObject** arr;} ccArray;它里面定义了一个CCObject的对象,还有两个整型,这样就很明显了,他们是包含关系。再最新的cocos2dx版本中应该看不到CCM...
可以这样定义:// local 表示定义的是局部变量local ccarray = {} 这样定义好之后,你就可以认为ccarray是一个空的数组 00分享举报为您推荐 getbuffer函数 getenv函数 Qstring InsertColumn qbytearray转int getmessage函数 createevent函数 qt获取lineedit内容 domodal函数 opendir函数 cvBoundingRect assert...
从log中可以看出,删除的时候是隔一个删一个,与我们便利array中所有元素的初衷相差甚远,所以,一定是什么地方用错了。 首先仔细看看CCARRAY_FOREACH这个宏,可以在cocoa/CCArray.h中找到它的定义 这里采用了指针移动的方式来提高效率。看到这个,大概心里有个数了,因为在array中删除了一个元素,如果这个元素后面的所有...
5 CCArray A类关系图 BCCArray继承自CCObject,而非CCNode,没有办法加到渲染树中去,但是参加了内存托管。所以应该手动处理。 示例: Array = CCArray::create(); Array->retain(); CCSprite *spr = CCSprite::create(); array->addObject(spr);