<b>关于j2me game双缓冲实现根究</b>[Java编程]
本文“<b>关于j2me game双缓冲实现根究</b>[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
双缓冲技术的利用很遍及,计划游戏的时刻更是需求它. 在midp1.0中,api中并没有game这个包,看到网上很多人在谈论计划游戏的时刻会呈现图片断裂,屏幕闪耀等问题.
我经过这几天的学习整理下自己的学习心得,用来抛砖,但愿对此有研究高手们彼此谈论.让我也学习学习.
双缓冲的原理可以这样形象的理解:把电脑屏幕看做一块黑板.首先我们在内存环境中成立一个“虚拟“的黑板,然后在这块黑板上绘制复杂的图形,等图形全部绘制完毕的时刻,再一次性的把内存中绘制好的图形“拷贝”到另一块黑板(屏幕)上.采纳这种办法可以提高画图速度,极大的改进画图效果.
关于手机来说.具体的历程就是通过extends Canvas.然后获得bufferImage.再然后就getGraphics.最后就是在这个graphics中绘制图片等,再最后就是把这个绘制好的bufferImage绘制的屏幕上.
说归说.具体还是要看代码的.里面的代码参照了一些开源的代码.
java 代码
package org.wuhua.game;
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
/**
* 类名:GameCanvas.java
编写日期: 2006-11-29
程序功效描写:
* 实现双缓冲的Game画布.实现原理是成立一个BufferImage.然后绘制,最后显示出来.就这么简单.
Demo:
Bug:
*
*
* 程序变更日期 :
变更作者 :
变更阐明 :
*
* @author wuhua
*/
public abstract class GameCanvas extends Canvas {
/**
* 绘制缓冲的图片.用户绘制资源的时刻都是操作这个图片来举行的
*/
private Image bufferImage;
private int height;
private int width;
private int clipX, clipY, clipWidth, clipHeight;
private boolean setClip;
protected GameCanvas() {
super();
width = getWidth();
height = getHeight();
this.bufferImage = Image.createImage(width, height);
}
protected void paint(Graphics g) {
//假如要求绘制指定区域的话就需求这样了
if (this.setClip) {
g.clipRect(this.clipX, this.clipY, this.clipWidth, this.clipHeight);
this.setClip = false;
}
g.drawImage(this.bufferImage, 0, 0, Graphics.TOP | Graphics.LEFT);
}
public void flushGraphics(int x, int y, int width, int height) {
this.setClip = true;
this.clipX = x;
this.clipY = y;
this.clipWidth = width;
this.clipHeight = height;
repaint();
serviceRepaints();
}
public void flushGraphics() {
repaint();
serviceRepaints();
}
/**
* 计划者主如果通过调用这个办法获得图片.然后便可以绘制了
* @return
*/
protected Graphics getGraphics() {
return this.bufferImage.getGraphics();
}
/**
* 这个办法主如果处理Nokia平台,用户调用setFullScreenMode(boolean enable) 时重新按照新的w & h成立缓冲图片
*/
protected final void sizeChanged(int w, int h) {
if (h > height) {
this.bufferImage = Image.createImage(w, h);
}
}
}
以上是“<b>关于j2me game双缓冲实现根究</b>[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |