网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > J2EE/J2ME
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.基于weblogic的ejb学习笔记二.
.Tomcat配置技巧精华详解.
.ibmwebsphere5.0教材+试题.
.Tomcat入门指南.
.EJB的SessionBean编程规则.
.windy‘s j2ee1.4 tutorial (chi.
.全面研读EJB2.0.
.演示Session Listener的使用方法.
.JavaMail快速入门-6.
.Tomcat服务器下JSP页面中文问题及.
.3D编程指南第五部分:使用M3G渲染.
.EJB3.0概览.
.MoreJSP编程实践(下).
.便携的J2EE应用.
.从远程装载PNG图片实例.
.FC API(JSR 75)简单讲解.
.Servlet容器工作原理(四).
.JavaRMI-IIOP入门.
.J2EE组件开发:消息驱动的EJB.
.JavaMail快速入门-8.

如何控制游戏中的FPS

发表日期:2007-12-23


    有人说游戏就是动画,就象电影一样将一幅幅画面展现给我们!

   游戏中有个关键的部分叫做FPS

     在计算机图像领域中,“FPS”是词组“Frames Per Second”的缩写。“Frames Per Second”在计算机图像范畴内被翻译为:“每秒传输帧数”。更确切的解释,就是“每秒中填充图像的帧数(帧/秒)“。这里的“FPS”就是我们常在CS游戏里说的“FPS”值,也可以理解为我们常说的“刷新率(Hz)”。

   而当刷新率太低时我们肉眼都能感觉到屏幕的闪烁,不连贯,对图像显示效果和视觉感观产生不好的影响。在FPS游戏例如CS中也是一样的,游戏里的每一帧就是一幅静止画面,而“FPS”值越高也就是“刷新率”越高,每秒填充的帧数就越多,那么画面就越流畅。

   为什么我们要专门涉及到FPS ,有人说使用线程Thread.sleep(一定时间)再描绘不就可以了吗!

   但实际游戏中不是这样的 游戏地图的载入,图象的描绘都要消耗时间。有时多有时少,在这样的情况下我们使用Thread.sleep定时描绘会出现画面卡,不连贯的现象!

     在此我们给出一个简单的控制FPS的方法,很简单就是判断间隔时间,时间<1000/FPS,那么等待一定时间,直到>=1000/FPS,那么继续!在此使用Funmobile公司的一段代码做为演示!!

Thread lThread=new Thread();//创立线程

 lThread.start();//线程启动

public void run()
    {
        Thread pThreadTemp = Thread.currentThread();
        do
        {
            if(pThreadTemp != lThread)// 判断当前线程是否为主线程 若不是返回
                break;
            long lTimeStart = System.currentTimeMillis();
            System.out.println("run");  
           

 repaint(0, 0, lWidth, lHeight);
            serviceRepaints(); //这是强制描绘 这2个描绘每次消耗的时间不一定相等


            long lTimeTaken = System.currentTimeMillis() - lTimeStart;

//获取时间间隔
            if(lTimeTaken < (long)60) //若小于1000/FPS,等待剩余时间
                try
                {
                    synchronized(this)
                    {
                        Thread.sleep((long)60 - lTimeTaken);
                    }
                }
                catch(InterruptedException e)
                {
                    System.out.println("error=".concat(String.valueOf(String.valueOf(e))));
                }
        } while(true);
    }


这样做可以使画面刷新稳定,画面流畅连贯!感谢丁丁最近一段时间对我学习的帮助!

本文仅代表个人观点,大家有好的建议或方案可以到论坛提出!

转载注明出处 J2MEDEV

(出处:)


上一篇:游戏框架之心得体会(2) 人气:620
下一篇:游戏框架之心得体会(1) 人气:788
浏览全部J2EE/J2ME的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐