2014-10-05 2 views
1
-(CCNode *)createFieldNode:(NSMutableArray *)fieldArray{ 

    CGSize winSize = [CCDirector sharedDirector].viewSize; 
    CCNode* stackNode= [CCNode node]; 

    for (int i; i <=fieldArray.count; i++){ 
     //itemP is previous item in array and itemC is current item in area based on index i 
     BPItem*itemP; 
     BPItem*itemC; 

     if(i!=0){ 
      itemP=[fieldArray objectAtIndex:i-1]; 
      itemC=[fieldArray objectAtIndex:i]; 
      float stackWidth=arc4random()%200+50; 
      float stackHeight=itemP.position.y+itemP.contentSize.height; 
      itemC.position=ccp(stackWidth,stackHeight); 
     } 
     else{ 
      itemC=[fieldArray objectAtIndex:i]; 
      float stackWidth=arc4random()%200+50; 
      itemC.position=ccp(stackWidth,0); 
     } 

     //having trouble adding multiple nodes to stackNode 
     [stackNode addChild:itemC]; 
    } 

    return stackNode; 
} 

Я хочу добавить CCNodes из fieldArray в родительский CCNode «stackNode». Когда я использую точки останова, я могу добавить CCNode с индексом 0 и CCNode в индекс 1. Однако сбой программы при i = 2. Ошибка, которую я получаю:Добавить CCNodes в родительский CCNode, используя цикл for

Завершение приложения из-за неперехваченного исключения «NSInternalInconsistencyException», причина: «ребенок уже добавлен в другой узел. Он не может быть добавлен снова '

Перед сбоем «stackNode» имеет двух детей. Я не добавляю CCNodes один за другим, потому что у меня есть сотни разных массивов с большим количеством полей. Я могу объяснить, если я был неясен.

ответ

1

Изменения для начала петли следующим образом:

//itemP is previous item in array and itemC is current item in area based on index i 
BPItem*itemP; 
BPItem*itemC;        // moved out of the for loop 
for (int i; i <fieldArray.count; i++){ // <- changed the end condition to avoid crash 
    ... rest of loop 

Кроме того, в коде, который создает fieldArray, убедитесь, что у вас есть логика, чтобы гарантировать, что нет никаких дубликатов, в противном случае вы будете иметь один и тот же вопрос (но по совершенно другой причине).

 Смежные вопросы

  • Нет связанных вопросов^_^