2012-11-17 82 views
1

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

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

的问题是,我不知道,如果它的可能,如果是在那里做更新

感谢

回答

0

你wan't调用仅在CCSprit可用的方法电子课? 然后使用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提到的评论:

/** CCTexture2D类。

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

  • 创建的CCTexture2D对象将始终具有两个幂的幂。

  • 取决于你如何创建CCTexture2D对象,纹理的实际图像区域可能比纹理尺寸,即“contentSize”!=(pixelsWide,pixelsHigh)和(MAXS,MAXT)小!=(1.0, 1.0)。

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

*/