首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用for循环将CCNodes添加到父CCNode

使用for循环将CCNodes添加到父CCNode
EN

Stack Overflow用户
提问于 2014-10-05 05:41:47
回答 1查看 60关注 0票数 1
代码语言:javascript
复制
-(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“。当我使用断点时,我可以在索引0处添加CCNode,在索引1处添加CCNode。然而,程序在i=2上崩溃。我收到的错误是:

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

在坠机前,"stackNode“有两个孩子。我不会一个接一个地添加CCNodes,因为我有数百个不同的数组,其中有许多fieldArray.count在20左右。如果我不清楚,请帮助我解释更多。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-05 11:02:56

按以下方式更改for循环启动:

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26199988

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档