I'm kind of new in cocos2Dm and i'm facing a problem that i can't solve So far I have 2 sprites (let's call them tables) in the layer , that is touchable, one of them has added other sprites, that I wanna move from one table to another one, i'm recognizing the objets that I touch, & moving them around, My problem is that I can't change the parent to be the other table, I tried to remove the object from parent in different ways & add the no the new parent, but it doesn't seem to work, the object is duplicated cause it's not being removed, I even tried to remove them when I touch it. I'm storing the objects in _objectsToDrag & calling this function in touchbegan:
- (void) lookForObjectWithTouchLocation:(CGPoint)touchLocation
{
for (RICCObject *object in _objectsToDrag) {
if (CGRectContainsPoint(object.boundingBox, touchLocation)) {
_selectedObject = object;
}
}
if (_selectedObject) {
[self objectSelectedWithLocation:touchLocation];
}
}
And then using _selectedObject to move it around, is this the problem? should I use aributes instead local objects in an array?
Any help is welcome Thank you in advance
To move an instance of a class that derives from CCNode (like CCSprite, CCLabelTTF etc) from one parent node to another, follow this process:
// 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];
This process works regardless of how or where else you store the nodes.
Note that if you see nodes being duplicated, you either create a new node without removing the old node or you have two nodes to begin with. In cocos2d, a CCNode can only have one parent and trying to add a node that already has a parent to another node will prompt you with an error message. If you experience duplicated nodes respectively removing a node from its parent still keeps it on screen try to find the cause for that first. This is something that doesn't happen under normal circumstances, except when you actually create multiple versions of the same node.