使用CCRenderTexture绘制的runAction CCSprite

时间:2012-11-17 00:17:44

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

我需要屏蔽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)]];

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

感谢

1 个答案:

答案 0 :(得分:0)

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

您可以将 CCRenderTexture转换为CCSprite ,其中包含:

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

不要忘记设置精灵的位置,因为它不接受来自renderTexture的位置。

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

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

正如CCTexture2D.h中提到的评论:

/ ** CCTexture2D类。

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

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

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

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

* /