在cocos2d中使用CCSprite数组添加精灵的问题

时间:2010-10-08 12:25:54

标签: cocos2d-iphone

我遇到以下代码问题。


mySpriteArray=[[NSMutableArray alloc] init];

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'而终止应用程序,原因:'child已添加。它不能再添加'。

我无法理解什么是错的,我在10次中添加10个对象,而不是1个对象,因为CCSprite * tempSprite =(CCSprite *)[mySpriteArray objectAtIndex:i];每次都创建一个新对象。 那么问题是什么?

1 个答案:

答案 0 :(得分:1)

您已创建一次星形对象,并将其添加10次到阵列:

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

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