Java 如何使布尔值持续一定的时间?

Java 如何使布尔值持续一定的时间?,java,lwjgl,slick2d,Java,Lwjgl,Slick2d,我试图为我的游戏创造一种效果,当玩家使用它时,角色运行得更快,但我想让sodaEffect持续一段时间,但我不确定如何做到这一点。我正在使用Slick2D和LWJGL制作游戏 public class MainMap extends BasicGameState { if(input.isKeyPressed(Input.KEY_I)) { sbg.enterState(5); } if(InventoryClass.sodaEffect ==

我试图为我的游戏创造一种效果,当玩家使用它时,角色运行得更快,但我想让sodaEffect持续一段时间,但我不确定如何做到这一点。我正在使用Slick2D和LWJGL制作游戏

    public class MainMap extends BasicGameState {

    if(input.isKeyPressed(Input.KEY_I)) {
        sbg.enterState(5);
    }
    if(InventoryClass.sodaEffect == true) {
        InventoryClass.characterSpeed = 1f;
    }
    else{
        InventoryClass.characterSpeed = .1f;
    }}

    public class InventoryClass {

    public static boolean sodaEffect = false;
    }

如果不确切了解InventoryClass的功能,我会这样做:

public class InventoryClass {
    private final static long SODA_DURATION = 5000L;
    private static long sodaStartTime;

    public static void startSodaEffect() {
        sodaStartTime = System.currentTimeMillis();
    }

    public static boolean hasSodaEffect() {
        return (System.currentTimeMillis() - sodaStartTime) < SODA_DURATION;
    }
}
公共类清单类{
私人最终静态长苏打持续时间=5000L;
私有静态长sodaStartTime;
公共静态void startSodaEffect(){
sodaStartTime=System.currentTimeMillis();
}
公共静态布尔值hassodeffect(){
返回值(System.currentTimeMillis()-sodaStartTime)

使用这种方法,您不需要额外的库。

查看计时器。Java有一个内置的,但您的库也可能提供一些功能。