簡體   English   中英

Java - 具有 thread.sleep 的多個線程的不同繪制

[英]Java - Different paint with multiple threads that have thread.sleep

我是新手,我正在嘗試制作游戲,但我不明白如何使用具有不同線程的不同塗料的 repaint() 。 一個線程有 thread.sleep 而另一個沒有。

這是我的一段代碼:

游戲面板:

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
}

}

敵人引擎:

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

}

我已經在互聯網上搜索過,但仍然沒有用……或者我可能是個愚蠢的人:/

請幫助我前輩

我不太明白你關於重繪的問題? 如果你想立即刷新ui,為什么不使用paintImmediately(0, 0, getWidth(), getHeight());

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM