我正在开发一个相当基本的2D Java游戏.我想知道是否有任何方法可以在一段时间内更改变量(例如布尔值或整数)?我想避免使用for循环,因为它们会在一段时间内完全冻结我的游戏.代码将是这样的:
if(certainAbilityIsActivatedThatTakes5Seconds){
// for 5 seconds{
player1.isBeingAffectedByTheAbilityThatTakes5Seconds = true; }
Run Code Online (Sandbox Code Playgroud)
希望我说的是有道理的,也是可行的.任何帮助都会很棒.现在我已经设法找到了这样做的方法,但它依赖于每秒至少获得60帧.我将不得不想象这是一种伪劣的做法.任何帮助都会很棒.
简单的解决方案,无需使用线程或计时器:而不是存储a 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;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4840 次 |
| 最近记录: |