有人可以解释这个计时码吗?

时间:2016-05-05 22:44:22

标签: java timer jframe jpanel schedule

我试图编写我的第一个游戏的代码,当我达到这一点时,我想让我的怪物实际上进行攻击;我想我必须使用Timer,但是不确定如何。所以我走了一个头,抬头看了看。 堆栈溢出的人发布了这个;发布它而没有实际解释每件事实际上意味着什么?任何人都可以帮忙,因为我对此有点新意,并希望了解我在做什么,而不仅仅是因为它有效。 它实际上只是我不能追随的5000,5000。

但它似乎没有正确更新。因为它总是说两次行动?

TimerTask damageInterval = new TimerTask()
        {
           public void run()
           {
              playerInfoPanel.health -= monsterDamage - playerInfoPanel.defenceLevel;

           }
        };

        inflictDamage.schedule(damageInterval, 5000, 5000);
     }

1 个答案:

答案 0 :(得分:2)

JavaDocs are your friend

public void schedule(TimerTask task,
                     long delay,
                     long period)
     

为重复的固定延迟执行安排指定的任务,   在指定的延迟后开始。随后的执行将会发生   按规定的时间间隔按规定的时间间隔分开。

     

在固定延迟执行中,每次执行都是相对于   上次执行的实际执行时间。如果执行是   因任何原因而延迟(例如垃圾收集或其他背景   活动),后续处决也将延迟。在漫长的   运行时,执行频率一般会略低于   指定时期的倒数(假设系统时钟   底层Object.wait(long)是准确的。)

     

固定延迟执行适用于重复活动   要求"顺畅。"换句话说,它适合于活动   在短时间内保持频率准确更为重要   从长远来看。这包括大多数动画任务,例如   定期闪烁光标。它还包括其中的任务   常规活动是响应人类输入而执行的,例如   只要按住某个键,就会自动重复一个字符。

     

参数:
task - 要安排的任务。
delay - 在执行任务之前延迟(以毫秒为单位)。期间 - 时间   连续任务执行之间的毫秒数。