代码之家  ›  专栏  ›  技术社区  ›  Andrew

将两种纹理组合在一起

  •  1
  • Andrew  · 技术社区  · 14 年前

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

    我正在使用ccspriteBatchnode进行渲染,我不知道是否真的需要组合对象的各个部分(可能使用批处理渲染3个部分的速度与渲染一个预组合的对象的速度相同)。

    所以有两个假设:

    1. 我需要在一个对象中组合部件吗?

    2. 如果,是的-我该怎么做?

    2 回复  |  直到 14 年前
        1
  •  1
  •   pyrosphere    14 年前

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

    沿着这条线的东西:

    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];
    

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

    可能会有一个小的性能影响,所以我会在为大量精灵使用这个方法之前考虑两次,但是我在一些情况下使用了这个方法,在我的情况下,我没有注意到任何性能问题。

        2
  •  1
  •   JLE    14 年前

    看看rendertexture演示。

    不用画笔,你可以用那些图片代替画笔,把你的3个部分放到上面。