6

AnimatedSprite特定の を描画するクラスを作成しましたTextureRegion。時々、色合いの効果が必要になるので、設定します (this.color はColormy のフィールドですAnimatedSprite):

super.draw(batch, parentAlpha);

batch.setColor(this.color);
batch.draw(this.frames[this.currentFrame], x, y, originX, originY, width, height, scaleX, scaleY, rotation)
batch.setColor(Color.WHITE);

ただし、AnimatedSpriteの色を黒または任意の色に設定すると、他のすべての色がその色合いになります。バッチを終了して新しいバッチを開始しようとさえしflush()ますが、何も機能していないようです。

色合い効果を正しく適用するのを手伝ってください。どんなアイデアでも感謝します。

4

2 に答える 2

8

可変Colorオブジェクトの共有に注意してください! もしあなたがそうするなら:

this.color = Color.WHITE;

そして、this.color後で変異Color.WHITEします。一般的に間違っている変異です。:)

Color変更するオブジェクトを作成するときは、常にコピーを作成してください。

this.color = new Color(Color.WHITE);

libGDX の多くのオブジェクトはこのように可変です (通常の Java ライブラリの同様のオブジェクトは不変です)。これは、libGDX が (当然のことながら) GC オーバーヘッドを非常に懸念しているためです。

于 2013-02-16T15:08:13.527 に答える
1

使用するのではなく

this.color = new Color(Color.WHITE);

あなたが使用することができます:

batch.setColor(Color.WHITE.tmp());

これにより、白色の一時的なコピーが作成され、少しきれいに見えます。

于 2015-09-13T22:54:51.533 に答える