java - 在 Java 中更改变量的值一定时间

标签 java time

我正在开发一款相当基础的 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/

相关文章:

c++ - 如何将字符串解析为 ctime 结构?

c++ - 连接和压缩 std::vector<std::string> 的最佳方法

java - itext7,html转pdf无法换行长英文单词或长数字

java - 如何添加华丽的过渡箭头?

c++ - 在 C++ 中测量时间

javascript - 如何计算小时数 (hh :mm:ss) in jquery?

java - 从 spring hibernate LocalSessionFactoryBean 中分离出 mappingResources

java - 检查 Collection 值(value)

macos - OS X Mountain Lion Java 版本

php - 它是 12 :15am but my NOW() thinks it is yesterday