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

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 オブジェクトは、常に 2 の累乗の次元になります。

  • CCTexture2D オブジェクトの作成方法によっては、テクスチャの実際の画像領域がテクスチャの寸法よりも小さくなる場合があります。つまり、"contentSize" != (pixelsWide, pixelHigh) および (maxS, maxT) != (1.0, 1.0) です。

  • 生成されたテクスチャの内容が上下逆になることに注意してください。

*/

于 2013-08-28T10:57:52.793 に答える