我的桌面应用程序滞后。我认为 java.awt.image.BufferStrategy 中有问题。
private void render() {
BufferStrategy bs = this.getBufferStrategy();
if (bs == null) {
this.createBufferStrategy(3);
return;
}
// drawing
Graphics g = bs.getDrawGraphics();
g.dispose();
bs.show();
Toolkit.getDefaultToolkit().sync();
}
我什至都没有开始画画。我在另一个项目中使用了同样的东西,并且它有效,例如,如果渲染方法看起来像那样,它就可以正常工作。
kết xuất void riêng tư(){
BufferStrategy bs = this.getBufferStrategy();
nếu (bs == null ){
this.createBufferStrategy(3);
return;
}
// drawing
Graphics g = bs.getDrawGraphics();
g.setColor(Color.GRAY);
g.fillRect(0, 0, getWidth(), getHeight());
int row; // số hàng, từ 0 đến 7
int col; // số cột, từ 0 đến 7
int x,y; // Góc trên bên trái của hình vuông
cho (hàng = 0; hàng < 8; hàng++ ) {
cho (col = 0; col < 8; col++) {
x = col * 70;
y = hàng * 70;
nếu ( (hàng % 2) == (col % 2) )
g.setColor(Color.white);
khác
g.setColor(Color.black);
g.fillRect(x, y, 70, 70);
}
}
g.dispose();
bs.show();
Toolkit.getDefaultToolkit().sync();
}
Những thứ cốt lõi là như nhau. Tại sao cái đầu tiên lại bị trễ trong cùng điều kiện?
Hãy thử xóa:
cho (hàng = 0; hàng < 8; hàng++ ) {
cho (col = 0; col < 8; col++) {
x = col * 70;
y = hàng * 70;
nếu ( (hàng % 2) == (col % 2) )
g.setColor(Color.white);
khác
g.setColor(Color.black);
g.fillRect(x, y, 70, 70);
}
}
Tôi là một lập trình viên xuất sắc, rất giỏi!