您的位置:首页 > 其它

HelloWorld帧速率

2016-06-15 16:57 197 查看
帧速率:是一秒钟出现图像的帧(幅)数,30fps即每秒有30幅画面流过,它要比23.98fps的流畅程度更好,我们的感官上也就是所谓动画画质更好,其实真正意义上的“画质”并没有变。
1.FrameRate类

package javagames.util;

public class FrameRate {
private String frameRate;
private long lastTime;
private long delta;
private int frameCount;
public void initialize(){
lastTime=System.currentTimeMillis();
frameRate="FPS 0";
}
public void calculate() {
long current=System.currentTimeMillis();
delta+=current-lastTime;
lastTime=current;
frameCount++;
if(delta>1000){
delta-=1000;
frameRate=String.format("FPS %s", frameCount);
frameCount=0;
}
}
public String getFrameRate(){
return frameRate;
}
}
2.应用程序实例

package javagames.render;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;

import javagames.util.FrameRate;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;

public class HelloWorldApp extends JFrame{
private FrameRate frameRate;
public HelloWorldApp(){
frameRate=new FrameRate();
}
protected void createAndShowGUI() {
GamePanel gamePanel=new GamePanel();
gamePanel.setBackground(Color.BLACK);
gamePanel.setPreferredSize(new Dimension(320,240));
getContentPane().add(gamePanel);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setTitle("Hello");
pack();
frameRate.initialize();
setVisible(true);
}
private class GamePanel extends JPanel{
@Override
public void paint(Graphics g) {
// TODO Auto-generated method stub
super.paint(g);
onPaint(g);
}
}
protected void onPaint(Graphics g) {
frameRate.calculate();
g.setColor(Color.WHITE);
g.drawString(frameRate.getFrameRate(), 30, 30);
repaint();
}
public static void main(String[] args) {
setDefaultLookAndFeelDecorated(true);
final HelloWorldApp app=new HelloWorldApp();
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
app.createAndShowGUI();
}
});
}
}

3.运行效果



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: