3

CCSprite左から右に言ってみましょう。この目的のために、一端から使い果たされた部分が「外側」になるようにスプライトのプロパティを変更しようとしていますtextureRect。スプライトの表示フレーム。

以前、スプライトシートからロードされるスプライトでこの種のことを行いましたが、完全に機能しましたが、これCCSpriteを使用CCRenderTextureして作成し、プロパティを変更すると、textureRectスプライト全体が消えてしまいます。

最初の画像は、CCRenderTexture から取得した元の CCSprite です。2 番目の画像は、私が達成したいことを示しています。スプライトの黒い点線の長方形の部分は除外する必要があります。スプライトの青い点線の部分のみを表示する必要があります。基本的に、この青い点線の長方形は私の textureRect です。

textureRect プロパティを変更して、スプライト全体の一部のみを表示する

スプライトを一方の端から減らす方法はありますか。また、通常作成されたスプライトと を使用して作成されたスプライトの間に違いはありますかCCRenderTexture

4

2 に答える 2

0

低レベルのハックを使用する前に、これと同様のことを行いました。

を使用する場合の回避策がありますCCProgressTimer。これは非常に簡単で、例には十分であると思います。

しかし、コメントで、special「両端から一度に排出する」などの要件があり、低レベルのハックが必要であると述べました。私の最後のオブジェクトからの私の解決策は次のとおりです。

1) テクスチャ イメージの生データを取得します。cocos2d では使用できCCRenderTexture、cocos2d-x では使用できますCCImage

2)CCRenderTextureの方法があり- (BOOL) saveToFile: (NSString *) name format: (tCCImageFormat) format ます。ソースコードを読んで、代わりに のように 2D 配列に保存してみてくださいbyte raw[1024][768]。この配列の各要素は、写真の 1 つのピクセルを表します (タイプは ではない可能性がありますbyte。よくわかりません。詳細はほとんど忘れてしまいます)。透過性が必要になるため、形式は PNG でなければなりません。

3)生データを直接変更し、ピクセルの透明度を0x0に設定して、非表示にします。

CCRenderTexture4)変更した画像データを使用して を再初期化します。

企業秘密であり、私のプロジェクトの 1 つのコア部分であるため、コードを直接提供することはできません。しかし、私はあなたに私の解決策を共有することができます. また、PNG ファイルがどのように機能するかについての知識も必要です。読んだ:

https://en.wikipedia.org/wiki/Portable_Network_Graphics#File_header

于 2013-04-17T04:55:38.557 に答える
0

私はばかげた間違いを犯していたことが判明しました.textureRect(CGRect)に値を供給している間、実際にはtextureRect.origin.yをテクスチャの高さに設定していたため、textureRectがテクスチャ領域を超えて(上に)移動しました.これは説明します彼らが消えた理由。

于 2013-04-17T07:18:46.530 に答える