用java做游戏 如何实现图片背景的连续啊 据说是使用什么多重缓冲技术,求高手教教我啊 据说是使用什么多重缓冲技术,求高手教教我啊 游戏类似于街机三国战记那种 求高手指点啊 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 双缓冲技术很简单!先来说说图片的绘制过程,一副图片是一笔一笔画出来的,如果直接将这个过程搬到屏幕上的话,就会很闪,如果将屏幕显示的速度放慢50倍,就可以看到,屏幕上的图片多了一笔,过了一会儿又多了一笔。。这样当然不好,因为我们只要看最后的成果就行了,作画的过程就免了!因此,聪明的先行者想到了一个号办法:在内存里搞到一块空间,将正在绘制中的图片放在内存中完成,画完之后才将这张“成品”搬到屏幕上显示给玩家看,这样的话,画面就显得很流畅。。为进一步说明,来点代码(双缓冲的实现其实很简单,看代码就知道) public void paint(Graphics g2) { if(offScreenImage == null) { offScreenImage = this.createImage(MainFrame.GAME_WIDTH, MainFrame.GAME_HEIGHT); } Graphics g = offScreenImage.getGraphics(); Color c2 = g.getColor(); g.setColor(Color.BLACK); g.fillRect(0, 0, MainFrame.GAME_WIDTH, MainFrame.GAME_HEIGHT); g.setColor(c2); g.setColor(Color.WHITE); g.drawString("missiles count:" + missiles.size(), 10, 30); g.drawString("explodes count:" + explodes.size(), 10, 50); g.drawString("tanks count:" + tanks.size(), 10, 70); g.drawString("tanks life:" + myTank.getLife(), 10, 90); g.setColor(c); // ======================================================================== g2.drawImage(offScreenImage, 0, 0, null); } 其中 offScreenImage 是放在内存中的 Image 对象!最后那个 g2.drawImage(offScreenImage, 0, 0, null)才是双缓冲技术的关键所在!offScreen就是指“看不见的,背后的”意思 哎JAVA还没看到Swing SWT部分。 朋友教你个赚分的方法,每天回复别人的帖子即可拿到可用来发帖的10分!如果一个月每天都来逛逛的话,就可以赚取300分,基本上有什么问题就都有足够的分数来发帖了如果想要下载别人的资源,那就得有资源分,你可以上传一些资源,比如资料、源码什么的啊即使你目前没有能力上传自己的源码,也可以将在网上找到的好的资源上传上来只要有人下载,你就发达了另外,不传之秘,上传资源之后要跑到贴吧来通知一下大家,也就是起个帖子专门来打广告如果有什么疑问的话,也可以乘打广告之余来捎带一下,充分利用发帖分呗!^ ^last, may you lucky! 请问下面一个例子怎么封装完成呢? SCJP考题 java异常问题 我等…… 创建 遇到错误 有关java的socket连接的问题,请各位大侠支招。急等!!! 问个关于Java和OpenOffice的问题 紧急求助,有分,在线等,过了今天就没分了哈 JVMTI达人 接口问题(初学) 我是java的初学者,谁能告诉我什么书最好,谢谢 求教,一个"项目管理"的项目.有建议给分! java基础问题(求助)。。 servlet 连接数据库登录问题
先来说说图片的绘制过程,一副图片是一笔一笔画出来的,如果直接将这个过程搬到屏幕上的话,就会很闪,如果将屏幕显示的速度放慢50倍,就可以看到,屏幕上的图片多了一笔,过了一会儿又多了一笔。。
这样当然不好,因为我们只要看最后的成果就行了,作画的过程就免了!因此,聪明的先行者想到了一个号办法:在内存里搞到一块空间,将正在绘制中的图片放在内存中完成,画完之后才将这张“成品”搬到屏幕上显示给玩家看,这样的话,画面就显得很流畅。。
为进一步说明,来点代码(双缓冲的实现其实很简单,看代码就知道)
public void paint(Graphics g2) {
if(offScreenImage == null) {
offScreenImage = this.createImage(MainFrame.GAME_WIDTH, MainFrame.GAME_HEIGHT);
}
Graphics g = offScreenImage.getGraphics();
Color c2 = g.getColor();
g.setColor(Color.BLACK);
g.fillRect(0, 0, MainFrame.GAME_WIDTH, MainFrame.GAME_HEIGHT);
g.setColor(c2);
g.setColor(Color.WHITE);
g.drawString("missiles count:" + missiles.size(), 10, 30);
g.drawString("explodes count:" + explodes.size(), 10, 50);
g.drawString("tanks count:" + tanks.size(), 10, 70);
g.drawString("tanks life:" + myTank.getLife(), 10, 90);
g.setColor(c);
// ========================================================================
g2.drawImage(offScreenImage, 0, 0, null);
}
最后那个 g2.drawImage(offScreenImage, 0, 0, null)才是双缓冲技术的关键所在!
offScreen就是指“看不见的,背后的”意思
JAVA还没看到Swing SWT部分。
如果一个月每天都来逛逛的话,就可以赚取300分,基本上有什么问题就都有
足够的分数来发帖了如果想要下载别人的资源,那就得有资源分,你可以上传一些资源,比如资料、源码什么的啊
即使你目前没有能力上传自己的源码,也可以将在网上找到的好的资源上传上来
只要有人下载,你就发达了
另外,不传之秘,上传资源之后要跑到贴吧来通知一下大家,也就是起个帖子专门来打广告
如果有什么疑问的话,也可以乘打广告之余来捎带一下,充分利用发帖分呗!^ ^last, may you lucky!