2012-05-02 108 views
0

我正在研究一個需要我創建包含更多CCArrays的CCArray的項目。我正在尋找一種方法來循環放置在根數組內的數組內的所有對象。我想使用CCARRAY_FOREACH遍歷所有15個對象。這可能嗎?如何循環遍歷複合CCArray中的所有對象

  • rootArray [0] - 包含subArrayA充滿5個對象的
  • rootArray [1] - 包含subArrayB充滿5個對象的
  • rootArray [2] - 包含subArrayC充滿5個對象

通過使用CCARRAY_FOREACH([batchnode children],object)使用CCSpriteBatchNode時,我已經使用了CCARRAY_FOREACH,但是如何使用數組數組?我知道CCARRAY_FOREACH(rootArray,object)將不起作用,因爲它返回的是內部數組而不是這些數組內的對象。

讓我知道,對不起,如果noob問題。 :0/

回答

0

你試過嗎?

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

可以使用foreach循環...

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

檢查,因爲我沒有X-代碼現在..它只是一個片斷..希望這會有所幫助的語法.. :)

+0

沒有foreach關鍵字。只需使用'for'。 – LearnCocos2D

+0

謝謝!我不知道我從來沒有想過嵌套的CCARRAY_FOREACH!我測試了它,它效果很好!這是我作爲任何人尋找確切的代碼代碼: CCARRAY_FOREACH(arrayOfArrayOfObjects,arrayOfObjects) { CCARRAY_FOREACH(arrayOfObjects,對象) {// 這裏做的東西...... }} – XBXSlagHeap

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中工作,我想我也使用了快速枚舉。

+0

哇.. 。一次也沒有想過這樣做。謝謝,我們所有人都在這裏感謝您的網站! :0) – XBXSlagHeap

+0

遞歸比迭代更昂貴。 –