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

标签 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 方法中?

最佳答案

要在 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

关于java - java中调用游戏中fps tick的paint方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24206085/

相关文章:

javascript - 使用循环在 D3 中设置样式?

c - 迭代C中未初始化的数组

java - 如何从仅给出字符串的数组列表中删除人群

Java 在运行时加载外部类

java - 计算一次方法并保存结果是不好的做法吗?

java - 双向链表中的递归方法

java - 如何指定无界通配符类型参数?

java - 如何将列表框的值从jsp传递到servlet?

java - 将 ListArray<Object> 从 Servlet 传递到在 Windows 中工作但在 Linux 中失败的 JSP

java - 如何循环回到字符串的开头? super 技能,加密-解密