如何循环复合CCArray中的所有对象

时间:2012-05-02 21:33:12

标签: cocos2d-iphone

我正在开发一个项目,要求我创建一个包含更多CCArray的CCArray。我正在寻找一种方法来遍历根数组内的数组中的所有对象。我想使用CCARRAY_FOREACH遍历所有15个对象。这可能吗?

  • rootArray [0] - 包含subArrayA,包含5个对象
  • rootArray [1] - 包含充满5个对象的subArrayB
  • rootArray [2] - 包含充满5个对象的subArrayC

我在使用CCARRAY_FOREACH([batchnode children],object)使用CCSpriteBatchNode时使用了CCARRAY_FOREACH但是如何使用数组数组?我知道CCARRAY_FOREACH(rootArray,object)将无法工作,因为它返回内部数组而不是这些数组中的对象。

如果是一个菜鸟问题,请告诉我并抱歉。 :0 /

3 个答案:

答案 0 :(得分:0)

你可以使用foreach循环...

for(CCArray *array in yourArray)
{
 for(YourObject *obj in array)
  {
       //access objects here
  }
}

检查语法,因为我现在没有x代码..它只是一个片段..希望这会有所帮助.. :)

答案 1 :(得分:0)

你试过这个吗?

CCARRAY_FOREACH(array, innerArray) 
{
    CCARRAY_FOREACH(innerArray, item) 
    {
        // stuff
    }
}

答案 2 :(得分:0)

递归是你的朋友。

-(void) recurseIntoArray:(CCArray*)array
{
    for (id item in array)
    {
        if ([item isKindOfClass:[CCArray class]])
        {
             [self recurseIntoArray:(CCArray*)item];
        }
        else
        {
             NSLog(@"item: %@", item);
        }
    }
}

只需使用根数组开始迭代:

[self recurseIntoArray:rootArray];

值得一提的是:CCARRAY_FOREACH不再是必需的,至少在cocos2d 1.1和2.0中你可以使用常规的快速迭代。也可以在cocos2d 1.0.1中工作,我想我也在那里使用了快速枚举。