Cocos2d iphone cocos2d:如何克隆CCNode层次结构
我尝试克隆一个CCNode层次结构,问题是我需要按类型重置和设置所有变量,我可以有一种更自动的方法吗 基本上我想做的是: -存储一个CCNode*(带有一些子节点,例如位置10-10处的图像和位置100-50处带有文本“Test”的标签); -然后克隆它,以获得一个具有相同默认值和child的新CCNode* 我需要复制它,因为在它们得到修改之后,就像一个模板的节点,在得到自定义值之前 如果您知道一种简单的复制方法,并且设置了所有层次结构(也使用了正确的类型),而不需要为每种类型使用大的If/else语句,这将对我有很大帮助^^Cocos2d iphone cocos2d:如何克隆CCNode层次结构,cocos2d-iphone,clone,hierarchy,ccnode,Cocos2d Iphone,Clone,Hierarchy,Ccnode,我尝试克隆一个CCNode层次结构,问题是我需要按类型重置和设置所有变量,我可以有一种更自动的方法吗 基本上我想做的是: -存储一个CCNode*(带有一些子节点,例如位置10-10处的图像和位置100-50处带有文本“Test”的标签); -然后克隆它,以获得一个具有相同默认值和child的新CCNode* 我需要复制它,因为在它们得到修改之后,就像一个模板的节点,在得到自定义值之前 如果您知道一种简单的复制方法,并且设置了所有层次结构(也使用了正确的类型),而不需要为每种类型使用大的If/e
谢谢此代码递归地克隆CCNode和所有子CCNode。您可以添加其他子类和其他属性进行复制。
+ (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;
}