2011-06-19 1 views
1

私はゲームを作成していますが、画像の一部を再ペイントし、他の人は一定のままにしておきます。私はpaint()のJavaアプレットに自分のメソッドを入れましたが、これは無限ループのメソッドにアクセスするようです。Javaアプレットのpaint()は無限ループに設定されています。私のメソッドが同じことをするのを避けるにはどうすればいいですか?

私のメソッドにアクセスすると同時にdraw()を使用する「ドライバメソッド」を作成するにはどうすればよいですか?

public void paint (Graphics g) 
{ 
    bufferGraphics.clearRect (0, 0, dim.width, dim.height); 
    //mainScreen(); 
    g.drawImage (offscreen, 0, 0, this); 
} // end Paint method 

public void update (Graphics g) 
{ 
    paint (g); 
} 

public void main (String[] args) 
{ 
    game(); 
} 
+2

1)すぐに役立つように、[SSCCE](http://pscode.org/sscce.html)を投稿してください。 2)このコードはおそらく 'update()'メソッドをオーバーライドするべきではありません。 (それはSSCCEなしで言うのは難しい)3) 'bufferGraphics'これは、カスタムペイントについてはほとんど間違った方法です。 'Graphics'オブジェクトがアプレットから来たものであればキャッシュしないでください。 4)なぜこのアプレットは 'main(String [])'を持っていますか? 5)すぐにより良い助けを得るために、[SSCCE](http://pscode.org/sscce.html)を投稿してください。 (はい、私はポイント1で言及したことを知っています - それは繰り返す価値がありました) –

答えて

2

AWTを使用する場合は、paint()およびupdate()をオーバーライドします。 Swingアプレットを作成してJAppletを拡張しない理由は、Swingが最近一般的に使用されているので、あなたは絵を描くことだけを学んでいるからです。 JPanelまたはJComponentを拡張してカスタムペインティングを行います。次に、JFrameと同じように、このコンポーネントをJAppletのコンテンツペインに追加します。

Swingを使ったペインティングの例については、Custom PaintingのSwingチュートリアルのセクションをお読みください。

+2

"..スイングは最近ではより一般的に使用されています.."これは、より多くの人々がスイングGUI AWTコンポーネントで作業していたほとんどの人は細部まで忘れてしまいました。 –

+0

"あなたはSwingアプレットを書かない理由(?)を学んでいるだけなので、BTW - OPはタイトルとメッセージ本文に「アプレット」を何度も載せていましたが、彼らも' japplet'タグを選択しました。 ;) 'swing'タグはjleedevによって追加されました。 –

関連する問題