gpt4 book ai didi

Java - 具有 thread.sleep 的多个线程的不同绘制

转载 作者:行者123 更新时间:2023-12-01 19:01:28 24 4
gpt4 key购买 nike

我是新手,我正在尝试制作一个游戏,但我也不明白如何使用不同线程的不同绘画中的 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());

关于Java - 具有 thread.sleep 的多个线程的不同绘制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59632239/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com