将两个纹理合二为一

时间:2010-11-21 21:56:21

标签: iphone objective-c c ios cocos2d-iphone

我正在为iOS开发游戏。我正在使用cocos2d库。我想要一个具有3个部分的对象 - 开始,结束和中间。我有这些组件的图像。并且在创建时可以拉伸对象。但是只有中间部分应该被拉伸,开始和结束应该没有缩放。因为这个操作只做了一次我决定为这个对象创建一个新的CCSprite是个好主意,而不是保留三个(为了提高性能)。

我正在使用CCSPriteBatchNode进行渲染,我不知道是否真的需要组合对象的部分(使用批处理渲染3部分将与渲染一个预组合对象一样快)。

所以有两个问题:

  1. 我是否需要在一个对象中组合部分?

  2. 如果,是的 - 我怎么能这样做?

2 个答案:

答案 0 :(得分:1)

您可以创建一个节点,并将三个精灵添加为子节点,而不是组合纹理。然后,您可以将父节点作为单个实体使用。

有些事情:

CCNode *sprites = [CCNode node];

CCSprite *spriteA = [CCSprite spriteWithSpriteFrameName:@"spriteA.png"];
spriteA.position = ccp(-10, 0);
[sprites addChild:spriteA];

CCSprite *spriteB = [CCSprite spriteWithSpriteFrameName:@"spriteB.png"];
spriteB.position = ccp(0, 0);
[sprites addChild:spriteB];

CCSprite *spriteC = [CCSprite spriteWithSpriteFrameName:@"spriteC.png"];
spriteC.position = ccp(10, 0);
[sprites addChild:spriteC];

您可以根据您的参数缩放和定位每个精灵,然后使用sprites对象将它们整体定位/缩放。

可能会有轻微的性能损失,所以我会在使用它之前考虑大量的精灵,但我在一些情况下一直使用这种方法,在我的情况下我没有注意到任何性能问题

答案 1 :(得分:1)

查看RenderTexture演示。

您可以使用这些图像代替画笔,而不是使用画笔,将3个部分放在上面。