作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在制作一款游戏,玩家一次最多可以 throw 三个射弹。我在重新加载时遇到问题。这是代码:
public class AmmoManager {
public void tick(){
if(Player.ammo <= 0){
for(int t = 0; t < 10; t ++){
}
Player.ammo = 3;
}
}
}
本来应该等一会儿,然后将弹药设置为3,但是一旦弹药变为0,就立即设置为3。我做错了什么?
我尝试过使用 sleep ,但整个应用程序会停止。
最佳答案
问题是你的主程序等待tick()返回一些东西。
这样想;如果你有这个方法
public boolean isOne(int num){
Thread.sleep(1000);
if(num==1){return true;}
return false;
}
和
boolean result = isOne(1);
if(result){ //can't be ran until isOne(1) returns the boolean
//do something
}
当您调用 isOne() 时,您无法继续主类,因为您没有它返回的 boolean 值。你必须等待它返回值,然后你才能继续main方法
解决方案是线程。我不是这方面的专家,因此您需要咨询其他人或在线资源,但我认为它看起来像这样:
public void tick(){
new Thread({ new Runnable(){
@Override
public void run(){
if(Player.ammo <= 0){
Thread.sleep(*seconds* times 1000);
Player.ammo = 3;
}
}).start();
}
关于java - 如何在java中等待而不停止整个程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50454986/
我是一名优秀的程序员,十分优秀!