4

私は趣味でゲーム (Snake Clone) を作成しています。Java API の Graphics クラスの dispose メソッドを見ていました。dispose メソッドをコメント アウトすると、私のアニメーションは、dispose メソッドの有無にかかわらず同じように機能します。Java API では、dispose メソッドがこれを行い、グラフィック コンテキストが使用しているシステム リソースを解放します。Java ガベージ コレクションは、dispose と同じようにプログラムのメモリを管理しませんか? dispose メソッドを保持する必要がありますか?

API は、同期方法を説明するのにあまり役に立ちませんでした。しかし、私が他のフォーラムで読んだことから、ToolKit クラスの sync メソッドは、描画操作 (私が推測する paintComponent メソッドなど) がグラフィックス カードに確実にフラッシュされるようにすることです。では、グラフィック カードの仕事は、プログラムの以前のグラフィック コンテキストの残りをクリーンアップすることですか?

コードは次のとおりです。

 public void paintComponent(Graphics g) {
            super.paintComponent(g);
            Toolkit.getDefaultToolkit().sync();
            g.dispose();

     }
4

1 に答える 1

8

それGraphicsに関しては、単純な原則があります。

明示的に作成した場合 (例: BuffereImage.createGraphics())、破棄します。

paintComponent(Graphics g)インスタンス内の OTOHgはツールキットによって提供され、必要に応じて破棄されます。独自のコードでこれを行うと、「予測できない」レンダリングが発生します。

于 2012-12-31T02:53:15.963 に答える