【问题标题】:Problem with adding sprite using CCSprite array in cocos2d在 cocos2d 中使用 CCSprite 数组添加精灵的问题
【发布时间】:2010-10-08 20:32:12
【问题描述】:

我对以下代码有疑问。


mySpriteArray=[[NSMutableArray alloc] 初始化]; star=[CCSprite spriteWithFile:@"22.png"]; for(int i=0;i<10; i++) { [mySpriteArray insertObject:star atIndex:i]; } // NSLog(@"x=%i",[mySpriteArray count]); for (int i=0; i<10; i++) // Opponents is NSMutableArray { CCSprite *tempSprite = (CCSprite *) [mySpriteArray objectAtIndex:i]; tempSprite.position=ccp(100,100); [self addChild:tempSprite]; }

} 其中star是CCSprite的一个对象,mySpriteArray是一个可变数组。问题是当我运行程序时它会崩溃并说

* -[GameScene addChild:z:tag:] 中的断言失败,/Users/salimsazzad/Desktop/balon hunter/libs/cocos2d/CCNode.m:305 2010-10-08 19:05:35.854 balon Hunter[3967:207] * 由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“已添加子项。无法再次添加”。

我不明白出了什么问题,我要添加 10 个对象,而不是 10 次添加 1 个对象,因为 CCSprite *tempSprite = (CCSprite *) [mySpriteArray objectAtIndex:i];每次都创建一个新对象。 那是什么问题???

【问题讨论】:

    标签: cocos2d-iphone


    【解决方案1】:

    您已经创建了一次星形对象并将其添加到数组中 10 次:

    star=[CCSprite spriteWithFile:@"22.png"];
    for(int i=0;i<10; i++) 
    {
        [mySpriteArray insertObject:star  atIndex:i];
    }
    

    所以你的数组包含相同的对象,这就是你得到断言的原因。

    【讨论】:

      猜你喜欢
      • 2011-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多