如何在多个位置Cocos2d中使用相同的Sprite

时间:2012-02-12 02:58:15

标签: cocos2d-iphone sprite

如何在多个位置拥有相同的精灵Cocos2d请帮忙 我已经搜遍过,找不到答案

3 个答案:

答案 0 :(得分:1)

只需创建多个Sprite(CCSprite实例)。它们都可以使用相同的纹理(位图文件)。

CCSprite * mySprite1;
CCSprite * mySprite2;
CCSprite * mySprite3;

// create several sprites from the same bitmap file
mySprite1 = [CCSprite spriteWithFile:@"spriteBitmap.png"];
mySprite2 = [CCSprite spriteWithFile:@"spriteBitmap.png"];
mySprite3 = [CCSprite spriteWithFile:@"spriteBitmap.png"];

mySprite1.position = ccp(100, 100);
mySprite2.position = ccp(200, 200);
mySprite3.position = ccp(300, 300);

答案 1 :(得分:0)

您不能将同一个CCSprite作为子节点添加到多个CCNode,但您可以使Cocos2D多次渲染相同的CCSprite。 要实现这一点,您需要创建一个CCNode子类,它将存储对CCSprite的引用,并在其-draw方法中应用所需的转换来绘制它。 例如

-(void)draw
{
    [super draw];

    CGPoint initialPosition = [_node position];
    float initialScale = [_node scale];

    [_node setScale:self.scale];
    [_node setPosition:self.position];
    [_node visit];
    [_node setPosition:initialPosition];
    [_node setScale:initialScale];
}

如果您需要画中画外观,可能必须使用glScissor。

然后,您只需要在每次想要渲染原始CCSprite的其他副本时添加此类的实例。

答案 2 :(得分:0)

在for循环上放置一个方法。

在方法内部创建CCSprite并对其进行修改。

这最适合静态精灵,因为我不知道如何在方法之外访问这些精灵。