2012-07-07 23 views
2

我是一種新的cocos2Dm,我正面臨一個我無法解決的問題 到目前爲止,我在圖層中有2個精靈(讓我們稱它們爲表格),那就是可觸摸的,其中一個添加了其他精靈,我想從一個桌子移動到另一個,我正在識別我碰到的物體,&將它們移動,我的問題是我無法將父母更改爲其他表,我試圖以不同的方式從父母刪除對象&添加不新的父母,但它似乎不工作,對象被複制,因爲它不被刪除,我甚至試圖刪除它們時,我碰它。 我存儲在_objectsToDrag &對象調用touchbegan此功能:在cocos2D中更改CCSprite的父項

- (void) lookForObjectWithTouchLocation:(CGPoint)touchLocation 
{ 
    for (RICCObject *object in _objectsToDrag) { 
     if (CGRectContainsPoint(object.boundingBox, touchLocation)) { 
      _selectedObject = object; 
     } 
    } 
    if (_selectedObject) { 
     [self objectSelectedWithLocation:touchLocation]; 
    } 
} 

,然後使用_selectedObject來移動它,這是什麼問題?我應該使用aributes而不是數組中的本地對象嗎?

歡迎任何幫助 預先感謝您

+0

http://stackoverflow.com/questions/6720615/how-to-transfer-a-ccsprite-from-one-parent-to-another – Narek 2016-02-15 14:14:37

回答

5

要移動從CCNode(比如CCSprite,CCLabelTTF等)派生從一個父節點到另一個類的實例,按照此過程:

// get yourNode in whatever way fits your implementation ... 
CCNode* nodeToMove = yourNode; 
// not cleaning up leaves actions running 
[nodeToMove removeFromParentAndCleanup:NO]; 
// add the removed node to its new parent node 
[newParentNode addChild:nodeToMove]; 

無論您如何或在哪裏存儲節點,此過程都可以工作。

請注意,如果您看到複製節點,則可以創建新節點而不刪除舊節點,或者您有兩個節點開始。在cocos2d中,CCNode只能有一個父節點,並試圖將已有父節點的節點添加到另一個節點時,會提示您輸入錯誤消息。如果您經歷重複節點,則從其父節點中刪除節點仍將其保留在屏幕上,嘗試首先查找其原因。這是在正常情況下不會發生的情況,除非您實際創建同一節點的多個版本。

+0

我已經嘗試過,但它似乎可以刪除一個ccsprite與一個按鈕,但是我無法讓它觸及我想要刪除的對象 – Oscar 2012-07-07 11:48:12

+0

這是什麼意思? – tallen11 2012-07-07 14:37:30

+0

當然,我不想在刪除元素後將其刪除,但我無法這樣做,所以我試圖通過其他方式刪除它,並且它可以正常工作,但觸摸正確的對象時它不起作用,這可能是因爲我' m設置一個實例變量來選擇對象? – Oscar 2012-07-07 14:48:26