1

私はこの質問に答えたテクニックを使用しました:Java3D:Canvas3D上に2DHUDをペイントする

そして私のコードは次のようなものです:

...
    GraphicsConfiguration config = SimpleUniverse.getPreferredConfiguration();
    Canvas3D canvas3D = new Canvas3D(config){
        public void postRender()
        {
            this.getGraphics2D().setColor(Color.white);
            this.getGraphics2D().drawString("Heads Up Display (HUD) Works!",100,100);
            this.getGraphics2D().flush(false);
        }

    };
...

後でこの2DHUDを削除したり、この2D HUDを編集したりするにはどうすればよいですか?

ありがとう、

4

1 に答える 1

1

レンダーが各フレームをゼロから完全にレンダリングする場合、たとえば、postRender() メソッドを使用して同じクラスに静的ブール値を追加できます。次に、メソッド内で if ステートメントを使用して、ブール値が true かどうかを確認します。それ以外の場合は、ブール値を false に設定した場合は何もしません。

ClassName.boolean_name=false;

HUD は表示されません。それを変更することに関しては、それは可能であり、実際に表示したい情報の種類に依存します. これは私がゲームに使用する例ですが、いくつかのテーマに適合します。

FPS、x、y、および z の位置を保存したいと思います。ゲームで作業している場合、表示する必要がある各属性のクラス内に変数を作成すると、次のようになります。

Graphics2D G2D = this.getGraphics2D()
G2D.setColor(Color.white);
G2D.drawString("FPS: "+fps, 100, 100);
G2D.drawString("X: "+x_pos, 100, 80);
G2D.drawString("Y: "+y_pos, 100, 60);
G2D.drawString("Z: "+z_pos, 100, 40);
G2D.flush(false);

また、G2D を this.getGraphics2D() に設定したことに気付いた場合、Graphics2D オブジェクトを使用するたびに外部メソッドを呼び出す必要がなくなりました。クラスを作成し、そのメソッドを呼び出して値を返す方法は、一度だけ取得して使用する場合と比べて、型の型が速くなり、長い目で見れば速度が速くなります。

このすべての後に私がすることは、各変数を正しい値に設定するだけで、それが表示されます。これはそれを更新する1つの方法です。同様に各行の変数を作成して、次のように実行できます。

line1="this is some text";
list2="this is some more text";
list3="etc...";
于 2011-12-09T20:24:23.113 に答える