如何解决在run+ KeyListener中的SWT Thread.sleep
因此,我试图通过KeyListener通过可控制的小型太空飞船制作一款小游戏。 由于SWT需要困住主线程才能更新UI,所以我想使用一个线程,我可以为敌人编程为飞船作战。
我想用Thread.sleep()建立一个计时器,以便敌人可以特定的方式移动,但是我现在的问题是当我尝试在run()甚至内部使用Thread.sleep()时离开Thread而没有Thread.sleep()会使整个UI速度显着降低。在Thread.sleep()完成之前,KeyListener似乎无法执行任何操作。
这是我现在的敌人线程代码:
display.asyncExec(new Runnable()
{
public void run()
{
switch(enemyrandomize())
{
case 0:
casualenemy();
break;
default:
break;
}
}
});
这工作得很好,但是如果我将Thread.sleep()放在Casualenemy()方法的内部或下方,就会出现问题。
我也尝试过:
Thread operationThread = new Thread()
{
public void run()
{
while (true)
{
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
display.asyncExec(new Runnable()
{
public void run()
{
switch(enemyrandomize())
{
case 0:
casualenemy();
break;
default:
break;
}
}
});
}
}
};
这在某种程度上是可行的,但是我只能在我想要的run()之外放置一个计时器。 有任何想法吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。