2012-05-02 3 views
0

私はもっと多くのCCArrayを含むCCArrayを作成する必要があるプロジェクトに取り組んでいます。私はルート配列の内部に格納されている配列内のすべてのオブジェクトをループする方法を探しています。 CCARRAY_FOREACHを使用して15個のオブジェクトすべてをループしたいと思います。これは可能ですか?コンパイラ内のすべてのオブジェクトをループする方法CCArray

  • 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/

答えて

0

これを試しましたか?

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

あなたは私が今のxのコードを持っていないような構文については...

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

チェック...そのわずかスニペットforeachループを使用することができます。これがお役に立てば幸いです。.. :)

+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

再帰は反復よりも高価です。 –

関連する問題