我正在开发一款相当基础的 2D Java 游戏。我想知道是否有任何方法可以在一段时间内更改变量(例如 boolean 值或整数)?我想避免使用 for 循环,因为它们会在一段时间内完全卡住我的游戏。代码将是这样的:
if(certainAbilityIsActivatedThatTakes5Seconds){
// for 5 seconds{
player1.isBeingAffectedByTheAbilityThatTakes5Seconds = true; }
希望我所说的是有道理的并且是可行的。任何帮助都会很棒。现在我已经设法找到一种方法来做到这一点,但它依赖于每秒至少获得 60 帧。我将不得不想象这是一种伪劣的做法。任何帮助都会很棒。
最佳答案
简单的解决方案,无需求助于线程或计时器:不是存储一个 boolean
,而是存储一个 long
,其中包含指示该功能何时被激活的时间戳。
public class Ability {
private static final int DURATION = 5000;
private long activatedAt = Long.MAX_VALUE;
public void activate() {
activatedAt = System.currentTimeMillis();
}
public boolean isActive() {
long activeFor = System.currentTimeMillis() - activatedAt;
return activeFor >= 0 && activeFor <= DURATION;
}
}
关于java - 在 Java 中更改变量的值一定时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26836777/