2012-02-25 65 views
0

我試圖從CCLayer中移除一個孩子,然後立即重新添加它。在Cocos2D中添加帶有重複標籤的對象

[player setTag:kPlayerSpriteTag]; 
[self addChild:player]; 
[[self getChildByTag:kPlayerSpriteTag] removeFromParentAndCleanup:YES]; 
[self addChild:player]; 

然而,這種崩潰,出現錯誤:「孩子已經加入它不能再次添加」

難道我不能從CCLayer正確刪除了孩子?

+0

直接從父刪除它(在這種情況下自);對不起,對於簡短的回答即時通訊cocos2d-x的傢伙!你可以做到這一點,通過傳遞孩子固執到自我removiechild(或類似這樣的) – Ocelot 2012-02-25 09:51:22

+0

這段代碼可能是危險的,在刪除播放器和再次添加它可能會被釋放,如果它不保留在其他地方。 – LearnCocos2D 2012-02-25 23:39:06

+0

添加播放器的代碼工作正常。我的問題是去除孩子... – JimmyB 2012-02-26 02:44:09

回答

0

我可以找到的唯一可能的解釋是,您在節點樹中有重複的標記。

在這種情況下,[self getChildByTag:kPlayerSpriteTag]將返回第一個節點,該節點具有getChildByTag:kPlayerSpriteTag,這可能與player不同。

如果您使用標籤來檢索節點,您應確保它們是唯一的。

+0

好主意!我查過了,肯定只有一名球員。 – JimmyB 2012-02-26 01:24:56

+0

換句話說,你的意思是:'[self getChildByTag:kPlayerSpriteTag] == player' ...這是真的嗎? – sergio 2012-02-26 11:21:49

+0

是的。所以\t [player removeFromParentAndCleanup:YES]似乎刪除了父子關係,但\t [[self getChildByTag:kPlayerSpriteTag] removeFromParentAndCleanup:YES]沒有。 – JimmyB 2012-02-26 11:51:32

0

嘗試這個

[self removeChildByTag:101 cleanup:YES]; 
+0

我也試過 - 同樣的錯誤! – JimmyB 2012-02-26 01:23:37

相關問題