2015年11月にリリースされたガイドに従って、私はこの時点でコードをそのままコピーしましたが、それでも私のためには機能しません。何かが廃止されましたか?JavaでBufferStrategyを使用しているときに黒い線を避ける方法
私は3つのバッファを持っています(1,2,3と呼んでください)。 2と3が画面に描画されると、画面の上部と左側に黒い線が表示されます。この同じコードは2つのバッファでうまく動作します。
バグ映像:https://gfycat.com/gifs/detail/GraveCompetentArmyworm
package field;
import javax.swing.JFrame;
import java.awt.*;
import java.awt.image.BufferStrategy;
public class Main extends JFrame{
private Canvas canvas=new Canvas();
public Main() {
setDefaultCloseOperation(EXIT_ON_CLOSE);
setBounds(0,0,1000,1000);
setLocationRelativeTo(null);
add(canvas);
setVisible(true);
canvas.createBufferStrategy(3);
BufferStrategy buffert = canvas.getBufferStrategy();
int p=0;
int ap=0;
while(p<1000) {
if (ap==100){
p++;
ap=0;
}
ap++;
buffert=canvas.getBufferStrategy();
Graphics g = buffert.getDrawGraphics();
super.paint(g);
g.setColor(Color.GREEN);
g.fillOval(p+100, 200, 50, 50);
buffert.show();
}
}
// public void paint(Graphics graphics) {
// super.paint(graphics);
// graphics.setColor(Color.RED);
// graphics.fillOval(100, 100, 100, 100);
//
// }
public static void main(String[] args){
new Main();
}
}
である。super.paint(g);が最初の間違いである。自分でバッファをクリアしてください。 – MadProgrammer
私にしようと明かしてください。 Canvasはフレームの子であり、フレームの境界線によってオフセットされています。super.paintを呼び出すと、フレームをGraphicsにペイントするように要求します。黒いバーは、実際には通常、ウィンドウの装飾で覆われている領域です – MadProgrammer
恐ろしい!私はsuper.paint(g)をcanvas.paint(g)に変更しました。今は期待どおりに動作しています。 –