2012-07-07 21 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