Java - разные краски с несколькими нитями, которые имеют thread.sleep - PullRequest
0 голосов
/ 07 января 2020

Я новичок ie, и я пытаюсь сделать игру, но я не понимаю, как использовать repaint () из другой краски с разными потоками. Один поток с thread.sleep, а другой нет.

Вот мой кусок кода:

GamePanel:

public class GamePanel extends JPanel implements MouseListener, MouseMotionListener{

EnemyEngine enemyE = new EnemyEngine();

public GamePanel() {

    new Thread(new Runnable() {

        @Override
        public void run() {
            while(true){            
                repaint();
            }
        }
    }).start();

    new Thread(new Runnable() {

        @Override
        public void run() {
            while(true){            
                enemyE.update();
                enemyE.repaint();

                try { 
                    Thread.sleep(1000/10);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }
    }).start();
}
public void paintComponent(Graphics g) {
    // board painting
}

}

EnemyEngine:

public class EnemyEngine extends JPanel{

Vector<Enemy> enemyVect = new Vector<>();

Random rand = new Random();

public void paintComponent(Graphics g){
    for (Enemy enemy : enemyVect) {
        enemy.render(g);
    }
}

public void update() { 
    for (Enemy enemy : enemyVect) {
        enemy.move();
    }
}

}

Я уже искал по inte rnet, но он все еще не работал ... или, может быть, я глупый: /

Пожалуйста, помогите мне сэмпай

1 Ответ

0 голосов
/ 07 января 2020

Я не совсем понимаю вашу проблему с перекрашиванием? Если вы хотите немедленно обновить sh пользовательский интерфейс, почему бы вам не использовать paintImmediately (0, 0, getWidth (), getHeight ());

...