如何使用我每秒运行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方法中?
答案 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