我有一个CCSprite
对象,我想在另一个对象中复制它CCSprite
。然后我想展示那个副本。我尝过这段代码,但它会产生运行时错误。
CCSprite* copy=CCSprite::spriteWithTexture(original->getTexture());
如何制作我的副本CCSprite
?
你这样做是为了速度吗?
如果是这样,您应该使用“精灵表”。使用精灵表,一组精灵帧(图形)被加载到纹理内存中,然后每次使用这些精灵帧中的任何一个创建精灵时,系统实际上都在使用已经在内存中的相同纹理。此外,当在屏幕上绘制精灵时,任何使用该纹理的精灵都会“批量”(同时)这样做,从而节省处理周期(速度很快)。
有关示例,请参见此项目。汽车和猫精灵加载在精灵表中: http ://www.gmtdev.com/blog/2011/08/19/how-to-use-box2d-for-just-collision-detection-with-cocos2d- X/
您应该确保在副本使用时不会删除原件的纹理。
你看过 CCObject::copy() 吗?
我经常使用这种技术来复制动作。CCSprite 派生自 CCObject,因此虽然我没有尝试过,但您可以通过在 sprite 实例上调用 copy() 来复制 sprite。
如果你想有很多重复的精灵,你需要将你的精灵存储在 CCArray 上,然后再次调用该函数以使用函数的 schedule 添加精灵
cocos2dx 没有为精灵提供克隆方法。您必须通过获取第一个精灵的纹理并以这种方式创建具有该纹理的精灵来自己制作。
Sprite *clonedSprite = Sprite::createWithTexture(originalSprite->getTexture());