【发布时间】:2019-07-05 06:24:56
【问题描述】:
我有一个渲染项目的方法。
我遇到的问题是我希望开关盒在 4.1 秒后断开。我不想使用Thread.sleep,因为它会在运行时冻结整个屏幕。
这是我尝试过的,但它不起作用:
private void drawItems(){
itemSelected = randomInt.getValue3();
switch (itemSelected){
case 0: if (!Obstacle.case0) {
doSomething();
}
new java.util.Timer().schedule(
new java.util.TimerTask() {
public void run() {
break;
}
},
4100
);
// other cases
我想打破它,否则屏幕上会呈现超过 1 个项目,但问题是“break”需要在 switch 或 loop 之外。
【问题讨论】:
-
不确定您到底想做什么,但是在另一个线程中运行绘图例程,然后在 4.1 秒后中断它是否有意义?
-
batcher.draw是做什么的?什么时候回来? -
@M.Prokhorov 它只是渲染项目,一旦 Obstacle.case0 == true 它在碰撞后删除项目。 nsandersen 我没有线程方面的经验,所以我真的不知道它应该是什么样子..
-
这里的问题是
break;仅在被正在运行的线程“遇到”时才起作用。这意味着它只会在doSomething()完成后断开开关,而不是之前。正如它现在所写的,即使Timer.schedule在doSomething()完成之后也会执行。您将需要阅读有关线程和中断的信息,具体内容包括doSomething()实现和相关循环。
标签: java libgdx switch-statement break