我需要屏蔽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)]];
问题在于我不知道它是否可能以及是否在进行更新
感谢
答案 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)。
请注意,生成的纹理内容会颠倒!
* /