当前位置:七道奇文章资讯编程技术Java编程
日期:2011-03-22 16:16:00  来源:本站整理

<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编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • <b>hosts是什么 hosts文件在什么位置 若何改正hosts</b>
  • <b>在 Windows 8 中手动安装语言包</b>
  • <b>五个常见 PHP数据库问题</b>
  • Windows中Alt键的12个高效快速的利用本领介绍
  • <b>MySQL ORDER BY 的实现解析</b>
  • <b>详解MySQL存储历程参数有三种范例(in、out、inout)</b>
  • <b>Win8系统恢复出来经典的开始菜单的办法</b>
  • <b>Win8系统花屏怎么办 Win8系统花屏的办理办法</b>
  • <b>Windows 7系统下无线网卡安装</b>
  • <b>为什么 Linux不需求碎片整理</b>
  • <b>Windows 8中删除账户的几种办法(图)</b>
  • <b>教你如安在win7下配置路由器</b>
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .