为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

解决Java设计游戏画面不动和闪烁问题

2017-09-20 2页 doc 17KB 34阅读

用户头像

is_841159

暂无简介

举报
解决Java设计游戏画面不动和闪烁问题我们在设计java图形程序的时候(注意,不是GUI程序,是用java来画图的程序,也就是说调用了public void paint(Graphics g)方法的程序。 第一个问题, 画出来的程序不会动。通常采用的解决方法是加入新的线程内部类,通过此内部类去访问包装类的repaint()方法,从而不停地重画该界面,实现我们能看到的动的效果。     private class PaintThread implements Runnable {         public void run() {             whi...
解决Java设计游戏画面不动和闪烁问题
我们在java图形程序的时候(注意,不是GUI程序,是用java来画图的程序,也就是说调用了public void paint(Graphics g)方法的程序。 第一个问, 画出来的程序不会动。通常采用的解决方法是加入新的线程内部类,通过此内部类去访问包装类的repaint()方法,从而不停地重画该界面,实现我们能看到的动的效果。     private class PaintThread implements Runnable {         public void run() {             while(true) {                 repaint();                 try {                     Thread.sleep(100);                 } catch (InterruptedException e) {                     e.printStackTrace();                 }             }         }             } 注意,这里使用的是内部类,才能调用外部包装类的repaint()方法。 第二个问题,闪烁现象。 主要是和线程的睡眠时间有关,睡眠时间越短,闪烁显现就越严重。是因为显示器的刷新频率高于程序。paint方法还没有来得及画完整幅画面,所以就出现了闪烁问题。 解决办法就是将使用双缓冲消除,先把所有东西画在虚拟屏幕上,前面什么都不画,然后一次性把画好的内容显示出来。 在java的图形当中,repaint()首先调用update(),然后update()会调用paint()。 因为paint()是不可以改的,repaint()是用来调用的。我们只能在update()上做文章。 第一步:需要用到一张虚拟的图片     Image offScreenImage = null; //虚拟图片 第二步,重写update()方法。(注,update是container的方法。)     public void update(Graphics g) {         if(offScreenImage == null) {             offScreenImage = this.createImage(800, 600);         }         Graphics gOffScreen = offScreenImage.getGraphics();         Color c = gOffScreen.getColor();         gOffScreen.setColor(Color.GREEN);         gOffScreen.fillRect(0, 0, 800, 600);         gOffScreen.setColor(c);         paint(gOffScreen);         g.drawImage(offScreenImage, 0, 0, null);     }
/
本文档为【解决Java设计游戏画面不动和闪烁问题】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索