首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >cocos2d :如何克隆CCNode层次结构

cocos2d :如何克隆CCNode层次结构
EN

Stack Overflow用户
提问于 2012-08-13 22:26:29
回答 1查看 4.3K关注 0票数 3

我尝试克隆一个CCNode层次结构,问题是我需要按类型重置和设置所有变量,我可以有一种更自动化的方法吗?

基本上我想做的是:-存储一个CCNode* (带有一些子节点,例如,在Pos 10-10位置存储一个图像,在Pos 100-50位置存储一个带有文本“Test”的标签);-然后克隆它,以便获得一个具有相同默认值和childs的新CCNode*。

我需要复制它,因为它们会在得到修改后,就像是Node的一个模板,然后才能得到自定义的值。

如果你知道一种简单的复制方法,并设置所有的层次结构(也有正确的类型),而不需要为每种类型使用大的if/else语句,这将会对我有很大的帮助^^

谢谢

EN

回答 1

Stack Overflow用户

发布于 2012-11-27 19:51:57

这段代码递归地克隆CCNode和所有子CCNodes。您可以添加要复制的其他子类和其他属性。

代码语言:javascript
复制
+ (CCNode*) cloneCCNode:(CCNode*)source
{
    CCNode* clone = [CCNode node];
    for (CCNode* srcSubnode in source.children) {

        CCNode* subnode;

        if ([srcSubnode isKindOfClass:[CCSprite class]]) { //only CCSprites are copied, add other subclasses if you need to
            CCSprite* srcSprite = (CCSprite*)srcSubnode;
            subnode = [CCSprite spriteWithTexture:srcSprite.texture];
            ((CCSprite*)subnode).displayFrame = srcSprite.displayFrame;
        } else {
            subnode = [self cloneCCNode:srcSubnode];
        }

        subnode.rotation = srcSubnode.rotation;
        subnode.position = srcSubnode.position;
        subnode.anchorPoint = srcSubnode.anchorPoint;
        subnode.zOrder = srcSubnode.zOrder;
        [clone addChild:subnode];
    }
    return clone;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11936348

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档