我是cocos2Dm的新手,正面临我无法解决的问题
到目前为止,我在该图层中有2个精灵(可以称为表格),这是可触摸的,其中一个添加了其他精灵,我想从一张桌子移动到另一张桌子,我已经意识到了我触摸的对象,&移动它们,我的问题是我无法将父级更改为另一个表,我试图以不同的方式从父级中删除该对象并添加no成为新的父级,但是它似乎不起作用,对象被复制,因为它没有被删除,我什至试图在触摸它们时将其删除。
我将对象存储在_objectsToDrag中,并在touchbegan中调用此函数:

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


然后使用_selectedObject移动它,这是问题吗?我应该在数组中使用aributes而不是局部对象吗?

欢迎任何帮助
先感谢您

最佳答案

要将从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只能有一个父节点,并且尝试将已经具有父节点的节点添加到另一个节点将提示您一条错误消息。如果您分别遇到重复的节点,则从其父节点中删除一个节点仍会使其停留在屏幕上,请尝试首先查找原因。这是通常情况下不会发生的事情,除非您实际上创建了同一节点的多个版本。

关于iphone - 在cocos2D中更改CCSprite的父级,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11374320/

10-13 09:13