【问题标题】:How To Have The Same Sprite In Multiple Locations Cocos2d如何在多个位置拥有相同的精灵 Cocos2d
【发布时间】:2012-02-12 02:58:14
【问题描述】:

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

【问题讨论】:

    标签: cocos2d-iphone sprite


    【解决方案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);
    

    【讨论】:

      【解决方案2】:

      你不能将同一个 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 的额外副本时,您只需添加一个此类的实例。

      【讨论】:

        【解决方案3】:

        将方法放在 for 循环中。

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-01-24
          • 1970-01-01
          相关资源
          最近更新 更多