boolean bury = false;
long lastAction = 0;
if (inputString.startsWith("::bury")) {
bury = !bury;
while (bury) {
if (System.currentTimeMillis() - lastAction > 500) {
stream.createFrame(122);
stream.method433(atInventoryInterface);
stream.method432(0);
stream.method431(Integer.parseInt(inputString.substring(7))); // Item ID
lastAction = System.currentTimeMillis();
}
}
}
所以我正在玩一个游戏,发送伪造的数据包让我的生活变得像任何孩子一样容易。问题是,让一个autotyper为我发送命令阻止我与其他玩家聊天。
这就是while循环进来的地方。我试图将代码置于一个无限循环中(每半秒调用一次代码),但是当我尝试这个过程时,整个游戏都会冻结。
我承认,我之前从未使用过while循环,也许我只是不太了解它,但它应该有效,不是吗?
答案 0 :(得分:1)
您无法在GUI应用程序中的主事件处理线程上执行此操作。 所有方法都应该做一些事情并快速返回,以便UI可以重绘,并可以调度其他事件。
您正在寻找的是一个按计划重复工作的计时器。您的GUI框架应该提供管理它们的工具。
这些计时器也避免了“忙等待”的需要,这就是你的循环正在做的事情。即使阻塞世界其他地方也不会成为问题,但这会浪费大量的CPU(和电力)。您可以在“500毫秒内”安排计时器,而不是在紧密循环中每隔纳秒左右查看一次。
答案 1 :(得分:0)
您可以使用sleep(0.5)
之类的东西来减慢循环。
答案 2 :(得分:0)
使用Thread.sleep(500);
使线程休眠半秒钟。而不是循环。但问题出在其他地方!!
答案 3 :(得分:0)
将此while循环放入新线程中。似乎你的循环在主线程中,所以无限循环停止了整个程序。
答案 4 :(得分:0)
你需要将代码在无限循环中运行到一些后台线程中,不同于运行其余代码的主线程,然后从中获取结果。