0

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

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

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

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

4

3 回答 3

0

你可以使用 foreach 循环...

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

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

于 2012-05-03T05:32:27.000 回答
0

你试过这个吗?

CCARRAY_FOREACH(array, innerArray) 
{
    CCARRAY_FOREACH(innerArray, item) 
    {
        // stuff
    }
}
于 2012-05-03T12:05:04.370 回答
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 中你可以使用 for 的常规快速迭代。也可以在 cocos2d 1.0.1 中工作,我想我在那里也使用了快速枚举。

于 2012-05-03T12:35:42.047 回答