java - Java - 具有 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());
推荐阅读
- c++ - unique_ptr
- javascript - 如何根据图表js中的值使用段属性为线条/边框颜色着色?
- python - Python“MySQL 错误 [-1]:执行操作失败;无法处理参数”
- unity3d - 玩家从地板上掉下来 Unity
- php - 重写 php switch 语句的 url
- flutter - “Null”不是“String”类型的子类型
- apache-kafka-connect - Debezium SMT 转换重新路由关键字段设置不起作用
- xtermjs - 如何从 xterm.js 获取 stty 回显模式?
- javascript - Nested Axios Call Only Returns First Value to Array
- java - 需要从具有用户名和密码但抛出 SMBApiException 的 java 连接 shred 驱动器