我將一個精靈從一個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