1

我需要蒙版 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)]];

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

谢谢

4

1 回答 1

0

您不想调用仅在 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 中提到的评论:

/** CCTexture2D 类。

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

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

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

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

*/

于 2013-08-28T10:57:52.793 回答