我正在制作我的第一个cocos2D游戏而且我在标签方面遇到了麻烦。我要向我的gamelayer
添加许多精灵,所以每次增加标记值时我都使用[self addChild:sprite z:1 tag:aTag];
aTag +=1;
。因为每个精灵都应该有一个唯一的标签值。有时我想清除游戏中的所有孩子,所以我使用这样的标签值删除那些精灵。
for (int i=10; i<1000; i++) {
CCNode *child = [self getChildByTag:i];
if (child == nil)
NSLog(@"removeChildByTag: child not found!");
else{
NSLog(@"child removed");
[self removeChild:child cleanup:YES];
child=nil;
}
}
当我再次将这些精灵像[self addChild:sprite z:1 tag:aTag]
添加到我的游戏层时,出现错误“EXE bad Access”。为什么它显示错误。
答案 0 :(得分:3)
您可以使用
直接删除孩子
[self removeChildByTag:aTag cleanup:YES];
对于错误访问,检查精灵是否为空或图像是否为空
答案 1 :(得分:0)
用于定义SAFE_REMOVE,如下所示
#define SAFE_REMOVE(p) if (p) [p removeFromParentAndCleanup:YES];
// Remove the the tag
CCNode* node = [self getChildByTag:YOURTAGNAMEHERE];
if (node != nil)
{
SAFE_REMOVE(node);
}