2012-11-17 46 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)。

  • 請注意,生成的紋理內容將顛倒!

*/