在java中的游戏fps tick中调用paint方法

时间:2014-06-13 13:06:11

标签: java loops methods paint frame-rate

如何使用我每秒运行60次的厚方法调用我的绘制方法来绘制其中的所有内容。

这是fps计算:

int FRAMES_PER_SECOND = 60;
    long maxWorkingTimePerFrame = 1000 / FRAMES_PER_SECOND;  //this is optional
    long lastStartTime = System.currentTimeMillis();

    while(true)
    {
        lastStartTime = System.currentTimeMillis();

            Tick();

        long processingTimeForCurrentFrame = System.currentTimeMillis() - lastStartTime;
        if(processingTimeForCurrentFrame  < maxWorkingTimePerFrame)
        {
            try
            {
                Thread.sleep(maxWorkingTimePerFrame - processingTimeForCurrentFrame);
            }
            catch(Exception e)
            {
                System.err.println("TSEngine :: run :: " + e);
            }
        }
    }

所以我该怎么称呼:

public void paint( Graphics g ) {

}

在我的Tick方法中?

1 个答案:

答案 0 :(得分:3)

要在Tick方法中调用paint()方法,您需要调用repaint()方法。在循环中,只需在组件调用您编写的绘制方法时添加repaint()

阅读这篇文章,因为它解释了绘画和重新绘画的工作方式。 http://www.scs.ryerson.ca/~mes/courses/cps530/programs/threads/Repaint/index.html

这是一篇展示如何调用重绘的文章。 http://www.scs.ryerson.ca/~mes/courses/cps530/programs/threads/Repaint/RepaintApplet3.java