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.运行效果
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.运行效果
相关文章推荐
- 深入理解FIFO(包含有FIFO深度的解释)
- amCharts图表中的JavaScript中文注释引起的浏览器兼容性问题
- ES6模块加载
- 括号配对问题
- Windows下zookeeper注册中心的安装和启动
- linux应用程序获取管理员权限
- 串口的Hex/AscII发送与显示
- 乱码以及restful风格
- 微信硬件平台设备直连全讲解(4)接收和回复微信客户端的文字、图片等信息
- 设计模式6大原则
- ARM处理器三级流水线与PC,LR的关系
- Shiro简单入门介绍
- Spring设置定时器:quartz
- 甲骨文Java Archive
- Ruby常用文件操作代码实例
- Sublime Text3安装插件
- DDD原著 -- 第二章 语言的交流和使用
- swiper的基础使用
- Android 开发之 动画Animation学习
- 说说Spring中的WebDataBinder