iphone - 更改 cocos2D 中 CCSprite 的父级

标签 iphone cocos2d-iphone parent ccsprite

我是 cocos2Dm 的新手,我遇到了一个无法解决的问题 到目前为止,我在图层中有 2 个 Sprite (让我们称它们为 table ),这是可触摸的,其中一个添加了其他 Sprite ,我想从一张 table 移动到另一张 table ,我正在识别我触摸的对象,&移动它们,我的问题是我无法将父表更改为另一个表,我尝试以不同的方式从父表中删除对象并添加新的父表,但它似乎不起作用,对象被重复,因为它没有被删除,我什至尝试在触摸它时删除它们。 我将对象存储在 _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/

相关文章:

ios - cocos2d 3.0 滑动菜单网格

iphone - Cocos2D - 填充 Sprite

jquery悬停找不到父跨度

iphone - 将 SQL 行加载到索引的 UITableView

iphone - NSNumber 和 NSInteger 有什么区别?

iphone - 以编程方式更改 iOS 锁屏

iphone - 为什么我的 UIScreen 和 UIWindow 大小不匹配?

objective-c - 在 box2d/cocos2diphone 中,我怎样才能产生一个冲动,使 b 点远离 a 点

sql - 使用一个 SQL 脚本删除子行和父行

c++ - Unix如何通过两种方式进行管道通信