两个命令之间的延迟Java?-游戏
我正在用java制作一个匹配的游戏,它进行得非常顺利。问题是,当我点击第二张牌时,如果它们不一样,牌会返回,但它不会显示第二张牌是什么。我正考虑在两张卡片显示后推迟节目,但它不会起作用。它只显示第一张卡,延迟程序,然后执行最初的操作。它不会显示第二张图片。我尝试了wait()和Thread.sleep(1000),但它们都不能产生我想要的效果两个命令之间的延迟Java?-游戏,java,multithreading,delay,sleep,wait,Java,Multithreading,Delay,Sleep,Wait,我正在用java制作一个匹配的游戏,它进行得非常顺利。问题是,当我点击第二张牌时,如果它们不一样,牌会返回,但它不会显示第二张牌是什么。我正考虑在两张卡片显示后推迟节目,但它不会起作用。它只显示第一张卡,延迟程序,然后执行最初的操作。它不会显示第二张图片。我尝试了wait()和Thread.sleep(1000),但它们都不能产生我想要的效果 // code above where it finds the first card and shows it y.setIcon(FindTheCar
// code above where it finds the first card and shows it
y.setIcon(FindTheCard(es2,'c')); //showing the second card
try{Thread.sleep(3000L); // delaying
}catch(Exception e){}
我对线程非常陌生,所以我想首先运行的是线程,然后是代码的其余部分,这不是我想要的。我希望执行y.setIcon(..),然后在其余代码运行之前有一点延迟。
我的代码的每一个方面都很完美,所以我想这是因为我缺乏知识。我所需要的只是延迟
但是,我也尝试了以下代码:
public class testing {
public static void main(String[] args) {
System.out.println("Do this stuff");
try { Thread.sleep(500); }
catch ( Exception e ) { }
System.out.println("Now do everything after this");
}
}
它是有效的。这两句话之间有一点延迟。我怎么能对我的卡片做同样的事情呢?它们实际上是按钮。我还删除了代码,该代码在显示卡片后将其转回,并且卡片保持不变。因此,第二张卡或图标没有问题。有两种方法可以编写图形渲染引擎:
您不应该在渲染线程之外调用UI更新函数,应该将请求提交到渲染线程,并在所需时间内休眠事件线程(或第三个计时器线程)有两种方法可以编写图形渲染引擎:
您不应该在呈现线程之外调用UI更新函数,应该将请求提交到呈现线程,并在所需时间内休眠事件线程(或第三个计时器线程)切勿在GUI代码(在事件调度线程上运行的代码)中使用
sleep
。相反,计划一个Swing计时器,该计时器将在延迟后执行操作。基本上,将当前睡眠
后的所有代码复制粘贴到Swing计时器中涉及的操作执行
方法中切勿在GUI代码(在事件调度线程上运行的代码)中使用睡眠
。相反,计划一个Swing计时器,该计时器将在延迟后执行操作。基本上,将当前睡眠后的所有代码复制粘贴到Swing计时器中涉及的操作执行的方法中。如上所述,Swing是单线程的。有一个称为事件调度线程的线程,它执行所有渲染,并且是处理所有Swing事件的地方(您的ActionListeners
和其他类型的侦听器都在该线程上运行)。不要在该线程上执行任何长时间运行的进程(服务器调用、磁盘I/O、Thread.wait()s),这一点很重要,因为这会导致GUI挂起。有关更多详细信息和示例,请参阅
对于您的情况,您可能还想看看Swing,因为它们似乎是为您想要的效果而专门构建的。如前所述,Swing是单线程的。有一个称为事件调度线程的线程,它执行所有渲染,并且是处理所有Swing事件的地方(您的ActionListeners
和其他类型的侦听器都在该线程上运行)。不要在该线程上执行任何长时间运行的进程(服务器调用、磁盘I/O、Thread.wait()s),这一点很重要,因为这会导致GUI挂起。有关更多详细信息和示例,请参阅
对于您的情况,您可能还想看看Swing,因为它们似乎是为您想要的效果而专门设计的。谢谢大家。使用摆动计时器的工作原理与我所希望的一样。太棒了;我想我应该多看看这些。再次感谢大家!谢谢大家。使用摆动计时器的工作原理与我所希望的一样。太棒了;我想我应该多看看这些。再次感谢大家!