我尝试克隆一个CCNode层次结构,问题是我需要按类型重置和设置所有变量,我可以有一种更自动化的方法吗?
基本上我想做的是:-存储一个CCNode* (带有一些子节点,例如,在Pos 10-10位置存储一个图像,在Pos 100-50位置存储一个带有文本“Test”的标签);-然后克隆它,以便获得一个具有相同默认值和childs的新CCNode*。
我需要复制它,因为它们会在得到修改后,就像是Node的一个模板,然后才能得到自定义的值。
如果你知道一种简单的复制方法,并设置所有的层次结构(也有正确的类型),而不需要为每种类型使用大的if/else语句,这将会对我有很大的帮助^^
谢谢
发布于 2012-11-27 19:51:57
这段代码递归地克隆CCNode和所有子CCNodes。您可以添加要复制的其他子类和其他属性。
+ (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;
}https://stackoverflow.com/questions/11936348
复制相似问题