1

私の実装がダブルバッファリングされた画像に対して正しいかどうかはわかります..画面内で移動する画像の境界が震えることに注意しているため...それは正常ですか??

public void paintComponent(Graphics g) {
    Image bufferimage= createImage(180,180);
    Graphics dbg= bufferimage.getGraphics();

    //clean the screen
    dbg.setColor(new Color(100,100,100));
    dbg.fillRect(0,0,getWidth(),getHeight());

    if (game_is_running) {
       // draw various type of object with drawImage
       for(int i=0; list[i]!=null; i++) {
           list[i].draw(dbg);
       }
       target.draw(dbg);
       I.draw(dbg);
    }

    //finally draw the image linked to graphics
    g.drawImage(bufferimage,0,0,this);
}
4

2 に答える 2

3

paintComponent() メソッドが行う必要があるのは、画像を描画することだけです。

「if game is running」コードは、paintComponent() メソッドには属しません。アイデアは、ゲームの状態を変更し、画像にカスタム描画を行うタイマーまたは何かを用意することです。次に、Swing が paintComponent() メソッドを呼び出すと、現在の状態でイメージを単純にペイントします。

Custom Paint ApproachesDrawOnImageの例を見てみましょう。このコードは、マウスを使用して画像に四角形を追加します。その後、コンポーネントが再描画されるたびに、画像が描画されます。

アイデアは、画像を一度作成/変更してから、画像を再描画することです。ゲームでは、画像を変更するたびにペイントも行うことが判明する場合がありますが、コードは paintComponent() メソッドの一部であってはなりません。

于 2013-08-19T14:21:17.373 に答える