【问题标题】:Add CCNodes to a Parent CCNode using a for loop使用 for 循环将 CCNodes 添加到父 CCNode
【发布时间】:2014-10-05 05:41:47
【问题描述】:
-(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; 
}

我想将 fieldArray 中的 CCNodes 添加到父 CCNode“stackNode”上。当我使用断点时,我可以在索引 0 处添加 CCNode,在索引 1 处添加 CCNode。但是程序在 i=2 处崩溃。我收到的错误是:

由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“子节点已添加到另一个节点。无法再次添加'

在崩溃之前,“stackNode”有两个孩子。我没有一一添加 CCNode,因为我有数百个不同的数组,其中许多 fieldArray.count 大约 20。如果我不清楚,请帮助我解释更多。

【问题讨论】:

    标签: for-loop cocos2d-iphone nsmutablearray sigabrt ccnode


    【解决方案1】:

    改变for循环开始如下:

    //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 的代码中,请确保您有确保没有重复项的逻辑,否则您将遇到同样的问题(但原因完全不同)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-22
      • 2018-08-14
      • 2020-07-21
      • 2014-04-17
      • 2015-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多