[英]Delay between two commands Java? - Game
我正在用Java做一个匹配的游戏,进展顺利。 问题是,当我单击第二张卡时,如果它们不相同,则它们会回头,但它永远不会显示第二张卡是什么。 我曾想过在显示两张卡之后延迟程序,但是它不起作用。 它只显示第一张卡,延迟程序,然后首先执行它。 它不会显示第二张图片。 我已经尝试过wait()和Thread.sleep(1000),但是它们都不会产生我想要的效果。
// 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");
}
}
而且有效。 两个句子之间有一点延迟。 我该如何使用自己的卡片做这些操作-实际上是按钮。 我还删除了显示卡后将其转回的代码,并且这些卡确实保持不变。 因此,第二张卡片或图标没有问题。
有两种方法可以编写图形渲染引擎:
事实证明,多线程很难正确设置,而且很容易出错,并且性能提升是令人怀疑的。
Java的决定是只有一个线程进行渲染。 结果是您在一个线程中运行事件处理和主逻辑,然后将GUI更新的工作提交给渲染线程。
我看不到您的完整代码,但是很可能您正在滥用渲染线程,通过使其休眠3秒钟,您实际上阻止了用户界面在这3秒钟内进行更新以显示更改,您在休眠后立即将其重置。
您不应该在渲染线程之外调用UI更新功能,而应该将请求提交到渲染线程,并使事件线程(或第三个计时器线程)休眠所需的时间
切勿在GUI代码(在事件调度线程中运行的代码)中使用sleep
。 而是安排一个Swing Timer
,该Timer
将在延迟后执行操作。 基本上,将当前sleep
后的所有代码复制粘贴到Swing Timer
涉及的actionPerformed
方法中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.