双缓冲技术的应用很广泛,设计游戏的时候更是需要它,
在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;
-
-
-
-
-
-
-
-
-
-
-
- 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();
- }
-
-
-
-
-
- protected Graphics getGraphics() {
- return this.bufferImage.getGraphics();
- }
-
-
-
-
- protected final void sizeChanged(int w, int h) {
- if (h > height) {
- this.bufferImage = Image.createImage(w, h);
- }
- }
- }
分享到:
相关推荐
本文将详细解释双缓冲的概念、工作原理,并提供一个简单的J2ME实现双缓冲解决屏幕闪烁的代码示例。 双缓冲是一种图形绘制优化技术,主要目的是减少屏幕闪烁和图像撕裂。在单缓冲系统中,每次图形绘制完成后立即显示...
《J2ME Game Programming》的源码是一份珍贵的学习资源,专为那些希望在Java平台上开发移动游戏的程序员设计。J2ME(Java Micro Edition)是Java技术的一个分支,主要用于嵌入式设备和移动设备,如早期的智能手机和...
"J2ME Game Programming"这本书很可能是详细讲解了以上这些J2ME游戏开发的各个方面,涵盖了从基础概念到高级技巧,帮助开发者利用J2ME平台创建引人入胜的移动游戏。学习这本书将提升开发者在低资源设备上的编程技能...
总结来说,"动画线程双缓冲"是J2ME开发中提高图形性能的重要手段,结合多线程编程和双缓冲技术,能够实现高效且平滑的动画,为用户带来更好的交互体验。通过对提供的源程序进行深入研究,开发者可以进一步提升自己的...
《J2ME Game Programming》是一本专为有基础的开发者准备的关于在Java 2 Micro Edition(J2ME)平台上进行游戏开发的指南。J2ME是Java平台的一个子集,主要用于嵌入式设备和移动设备,如早期的智能手机和平板电脑。...
关于j2me的相关资料 ublic class Person implements KSerializable { private String _name; private String _answer; private String _userid;
3. **Game API**:J2ME并没有专门的游戏API,但可以使用MIDP的Canvas类来创建自定义图形界面,实现游戏逻辑。Canvas类允许开发者绘制图形、处理事件,是构建游戏画面的基础。 4. **图形与动画**:开发者需要掌握...
《J2ME Game Programming》这本书深入浅出地介绍了如何在J2ME平台上创建游戏,对于想要进入移动游戏开发领域的开发者来说,是一本非常有价值的资源。 **J2ME架构** J2ME架构由配置(Configurations)和 profiles...
本文将通过对"xiaomifeng.rar"压缩包中的"模拟小蜜蜂"游戏源代码的分析,深入探讨J2ME游戏开发的相关知识点。 一、J2ME基础架构 J2ME由一组配置和 profiles 组成,用于适应不同的设备能力。在“模拟小蜜蜂”游戏中...
"J2ME game" 指的是这个项目是用J2ME开发的,这是一个专门用于小型设备,如早期的移动电话和智能设备的Java平台。"j2me_bubble_泡泡" 进一步明确了游戏的主题,即"泡泡",可能是一款类似于消除或射击泡泡的游戏。 ...
这个压缩包“J2ME-MyCS.zip”包含了一个基于J2ME的手机游戏,名为“CSMidl”,它是对经典第一人称射击游戏Counter-Strike(CS)的2D版本实现。** **1. J2ME环境配置:** 在开发J2ME应用之前,开发者需要设置J2ME...
今天,我们来深入探讨一个特定的项目——“Maze 3D”,这是一款基于J2ME的游戏源代码,它为我们提供了宝贵的3D迷宫游戏开发经验。 J2ME是Java平台的一个子集,设计用于资源有限的设备,如早期的智能手机和平板电脑...
《J2ME游戏开发与MIDP2.0》是一本深入探讨Java 2 Micro Edition (J2ME) 平台上游戏开发的专业书籍,尤其针对Mobile Information Device Profile 2.0 (MIDP2.0) 规范进行了详尽的讲解。J2ME是Java在嵌入式设备和移动...
变色龙游戏,一个以J2ME(Java 2 Platform, Micro Edition)技术实现的免费移动平台游戏,吸引了众多玩家的关注与喜爱。这款名为“Chameleon Free”的游戏,不仅展示了J2ME平台的强大功能,还体现了开发者在游戏设计...
《J2ME Game Programming》是一本专为Java Mobile Edition(J2ME)平台设计的游戏编程指南,对于希望涉足Java手机游戏开发的程序员来说,这本书及其配套的源代码提供了丰富的学习资源。J2ME是Java的一个子集,主要...
### 非常好的关于J2ME学习概要 #### J2ME简介与学习路径 J2ME(Java 2 Platform, Micro Edition)是Sun Microsystems为嵌入式设备和移动设备设计的一种Java平台版本。本文章旨在为初学者提供一份详尽的J2ME学习...
本篇将围绕“J2ME Alibaba Game SourceCodes”这一主题,深入探讨其中蕴含的技术知识点,帮助对J2ME游戏开发感兴趣的读者理解和学习。 首先,J2ME是Java平台的一个子集,主要针对嵌入式和移动设备,如早期的智能...
《J2ME Game Programming》是一本专为Java Mobile Edition(J2ME)游戏开发而编写的书籍,其随书源代码提供了丰富的实例和练习,帮助读者深入理解和掌握J2ME平台上的游戏编程技术。J2ME是Java在移动设备上应用的一种...