【问题标题】:runAction CCSprite drawn with CCRenderTexture使用 CCRenderTexture 绘制的 runAction CCSprite
【发布时间】:2012-11-17 00:17:43
【问题描述】:

我需要蒙版 CCSprite,并使用 CCRenderTexture 来绘制具有该功能的精灵。它工作正常,但现在我正在尝试为这些精灵设置动画,但我想使用 runAction CCNode 方法来制作更复杂的动画:

CCSprite *sprite = [CCSprite spriteWithFile:@"file.png"];

self.rtx = [CCRenderTexture renderTextureWithWidth:980 height:726 pixelFormat:kCCTexture2DPixelFormat_RGBA8888];
self.rtx.position = CGPointMake(size.width / 2, size.height / 2);
[self addChild:self.rtx];

[self drawTexture:0];
[self schedule:@selector(drawTexture:) interval:0.1];

-(void)drawTexture:(ccTime)delta_{
    [self.rtx beginWithClear:0 g:0 b:0 a:0];
    [sprite visit];
    [self.rtx end];
}

所以我想更新它的位置,例如:

[sprite runAction:[CCMoveBy actionWithDuration:10.0 position:CGPointMake(0, sprite.position.y + 1)]];

问题是我不知道它是否可能以及是否在哪里进行更新

谢谢

【问题讨论】:

    标签: objective-c cocos2d-iphone xcode4.5


    【解决方案1】:

    您不想调用仅在 CCSprite 类中可用的方法吗? 然后使用 CCSprite 类;)。

    您可以使用以下方法将 CCRenderTexture 转换为 CCSprite

    CCSprite *spriteFromRTX = [CCSprite spriteWithTexture:rt.sprite.texture];
    spriteFromRTX.position = CGPointMake(size.width / 2, size.height / 2);
    

    不要忘记设置精灵的位置,因为它不会从渲染纹理中获取位置。

    还要注意这个问题,CCSprite 可能翻转了 Y 轴。

    但您可以在生成的精灵上使用flipY = YES,请参阅:http://www.raywenderlich.com/4421/how-to-mask-a-sprite-with-cocos2d-1-0

    正如CCTexture2D.h中提到的cmets:

    /** CCTexture2D 类。

    • 该类允许从图像、文本或原始数据轻松创建 OpenGL 2D 纹理。

    • 创建的 CCTexture2D 对象将始终具有二次幂。

    • 根据您创建 CCTexture2D 对象的方式,纹理的实际图像区域可能小于纹理尺寸,即“contentSize”!= (pixelsWide, pixelHigh) 和 (maxS, maxT) != (1.0 , 1.0)。

    • 请注意,生成的纹理内容会上下颠倒!

    */

    【讨论】:

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