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