我将一个精灵从一个NSMutableArray复制到另一个NSMutableArray,但是当我从第一个NSMutableArray中删除CCSprite时,它也在第二个数组中被删除。 我该如何预防?在NSMutableArrays之间复制CCSprites
在初始化方法中,数组初始化如下。
spriteTempArray = [[NSMutableArray alloc] init] ;
myPowerUpArray = [[NSMutableArray alloc] init] ;
这是第一种方法中的精灵被放置在屏幕上时,德雪碧触摸屏幕上的某处动画
CCSprite *powerUpSprite = [[CCSprite alloc] initWithFile:SpriteFileName ] ;
powerUpSprite.position = ccp(xcenter,ycenter);
powerUpSprite.scale = 0;
[self addChild:powerUpSprite z:20 tag:puTag];
[spriteTempArray addObject:powerUpSprite];
id zoomIn = [CCScaleTo actionWithDuration:0.2 scale:1] ;
id moveTo = [CCMoveTo actionWithDuration:0.2 position:ccp(winSize.width/2,120)];
[powerUpSprite runAction:zoomIn];
[powerUpSprite runAction:moveTo];
然后,它移动到屏幕的一角,还存储在另一个NSMutableArray(myPowerUpArray)中。但删除操作将删除两个阵列中的精灵。
CCSprite *powerUpSprite = [spriteTempArray objectAtIndex:0];
id zoomOut = [CCScaleTo actionWithDuration:0.2 scale:0.35] ;
id moveTo = [CCMoveTo actionWithDuration:0.2 position:ccp(winSize.width - 24,winSize.height -31 * myPowerUps -80)];
[powerUpSprite runAction:zoomOut];
[powerUpSprite runAction:moveTo]
[myPowerUpArray addObject:powerUpSprite];
[self deleteSpriteTempArray];
下面的sprite删除方法。
-(void)deleteSpriteTempArray{
NSMutableArray *filesToRemove = [[NSMutableArray alloc] init];
for (id obj in spriteTempArray) {
[filesToRemove addObject:obj];
[self removeChild:obj cleanup:YES];
}
[spriteTempArray removeObjectsInArray:filesToRemove];
}
我还没有观察到的阵列,比德精灵其他被从屏幕上消失。
显示一些代码。 – YvesLeBorg
寻求调试帮助的问题(“为什么这个代码不工作?”)必须包含所需的行为,特定的问题或错误以及在问题本身中重现问题所需的最短代码。特别向我们展示如何分配/初始化阵列以及如何执行复制。 – LearnCocos2D
所以回到你的问题,这是'第一阵列'和'第二阵列'?你如何观察从第二个数组中删除的精灵? – YvesLeBorg