添加到Int值之间的延迟

时间:2014-02-25 10:13:07

标签: java int delay

当你在我的Java游戏中与NPC人交谈时,屏幕上会出现NPC的字符串数组。按ENTER将向currentMessage整数添加一个,前进到下一条消息。但是,如果我有这样的事情:

if(KeyInput.currentKey(KeyInput.ENTER)) {
    currentMessage++;
}

然后它会快速连续地浏览所有消息,因为它会每秒检查30次。在这样做之间添加延迟的最佳和最有效的方法是什么?

我做到了:

long timer = System.nanoTime();


long elapsed = (System.nanoTime() - timer) / 1000000
if(KeyInput.currentKey(KeyInput.ENTER) {
    if(elapsed > 500) {
        currentMessage++;
        timer = System.nanoTime();
    }
}

但我不喜欢这个,因为它变得凌乱,我觉得它不是很有效。

有什么建议吗?

4 个答案:

答案 0 :(得分:1)

仅在当前按下Enter时增加,但在最后一帧中未按下Enter。引入一个临时变量。

请注意,这不会自动重复。

boolean lastEnter = false;

....

boolean enter = KeyInput.currentKey(KeyInput.ENTER);
if(enter && !lastEnter) {
    currentMessage++;
}
lastEnter = enter;

答案 1 :(得分:0)

尝试{             //线程休眠1000毫秒             了Thread.sleep(30);          } catch(例外e){               的System.out.println(E);            }

答案 2 :(得分:0)

您可以设置Timer并在500ms之后增加数组索引。

Timer t = new Timer();
t.schedule(new TimerTask()
{
    @Override
    public void run()
    {
        currentMessage++;
    }
}, 500);

答案 3 :(得分:0)

你的经过时间计数器是做这类事情的更好方法之一。它看起来有点乱,但解决这个问题的简单方法是将其打包为一般类,以便重新使用代码。