2016-07-18 3 views
1

Мое настольное приложение лагов. Я думаю, что что-то не так в java.awt.image.BufferStrategy.BufferStrategy lagging

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(); 
} 

Я даже не начал рисовать. Я использовал то же самое в другом проекте, и он работал, например, если метод визуализации выглядит так, он отлично работает.

private void render(){ 
BufferStrategy bs = this.getBufferStrategy(); 

    if (bs == null){ 
     this.createBufferStrategy(3); 
     return; 
    } 
    // drawing 
    Graphics g = bs.getDrawGraphics(); 
    g.setColor(Color.GRAY); 
    g.fillRect(0, 0, getWidth(), getHeight()); 
    int row; // Row number, from 0 to 7 
    int col; // Column number, from 0 to 7 
    int x,y; // Top-left corner of square 

    for (row = 0; row < 8; row++) { 
     for (col = 0; col < 8; col++) { 
      x = col * 70; 
      y = row * 70; 
      if ((row % 2) == (col % 2)) 
       g.setColor(Color.white); 
      else 
       g.setColor(Color.black); 
      g.fillRect(x, y, 70, 70); 
     } 
    } 
    g.dispose(); 
    bs.show(); 
    Toolkit.getDefaultToolkit().sync(); 
} 

Основные вещи такие же. Почему первая отстает в тех же условиях?

+0

Без 'Toolkit.getDefaultToolkit() синхронизации();. «Я даже не могу закончить свою программу. Мышь начинает медленно двигаться. – Dexxrey

ответ

0

Попробуйте удалить:

for (row = 0; row < 8; row++) { 
    for (col = 0; col < 8; col++) { 
     x = col * 70; 
     y = row * 70; 
     if ((row % 2) == (col % 2)) 
      g.setColor(Color.white); 
     else 
      g.setColor(Color.black); 
     g.fillRect(x, y, 70, 70); 
    } 
}