无花的空间--http://wuhua.3geye.net-- 您今天UCWEB了吗?--http://www.ucweb.com

当你来到我的空间的时候,你会看到很多Google,Nokia,Mobile,J2ME ,Android,3G,无线开发,手机软件,手机软件开发等与Google,手机相关的文章,你千万不要惊讶。这就是我一个专注Google,无线开发的无花。传播知识,分享经验,技术交流是我开空间的直接目的。当然如果有项目开发,我还是很希望赚点外快的。

用户操作
[即时聊天] [发私信] [加为好友]
无花ID:gooogledev
40562次访问,排名2971,好友20人,关注者24人。
J2EE 2年的开发时间,
J2ME 2年的开发时间
gooogledev的文章
原创 80 篇
翻译 0 篇
转载 3 篇
评论 201 篇
无花的公告

人要吃很多苦才可以长大!

踏实平凡人应该遵守的原则!

与我TM

gooogledev@gmail.com

友情链接

我的j2me创意

Wap浏览器的源代码

用自己写的rms引擎写的电话本

RSS订阅此博客  
用抓虾订阅此博客
用google订阅此博客
用bloglines订阅此博客
    网络封神榜 | 饶荣庆
最近评论
22:main()在哪个.java中
ant-shopping:I support author's viewpoint, hoped that will have later also more better articles,
abercrombie fitch handbag
ptsell:I support author's viewpoint, hoped that will have later also more better articles,
Balenciaga Bags
真的假的,屁股上的痣也能拍出来?
leo2012:奇怪,怎么下的wap explorer不能访问wap站点
文章分类
收藏
    相册
    j2me创意图片
    j2me教程
    我的照片
    我的链接
    3G视线
    EasyMF J2ME框架
    Lucene中国
    我的Google
    无花的博客
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    原创  关于j2me game双缓冲实现探讨 收藏

    新一篇: 号称一女程序员的强贴 | 旧一篇:  如何在MIDP中实现图片放缩(转自linuxmine)

    关键字: J2ME       
          双缓冲技术的应用很广泛,设计游戏的时候更是需要它,
         在midp1.0中,api中并没有game这个包,看到网上很多人在讨论设计游戏的时候会出现图片断裂,屏幕闪烁等问题。
         我经过这几天的学习整理下自己的学习心得,用来抛砖,希望对此有研究高手们相互讨论。让我也学习学习。
        
         双缓冲的原理可以这样形象的理解:把电脑屏幕看作一块黑板。首先我们在内存环境中建立一个“虚拟“的黑板,然后在这块黑板上绘制复杂的图形,等图形全部绘制完毕的时候,再一次性的把内存中绘制好的图形“拷贝”到另一块黑板(屏幕)上。采取这种方法可以提高绘图速度,极大的改善绘图效果。
        对于手机来说。具体的过程就是通过extends Canvas。然后获取bufferImage。再然后就getGraphics。最后就是在这个graphics中绘制图片等,再最后就是把这个绘制好的bufferImage绘制的屏幕上。
         说归说。具体还是要看代码的。里面的代码参照了一些开源的代码。
    java 代码
     
    1. /******************************************************************** 
    2.  * 项目名称             :足球项目j2me客户端         
       
    3.  *  
    4.  * Copyright 2005-2006 Teesoo. All rights reserved 
    5.  ********************************************************************/  
    6. package org.wuhua.game;  
    7.   
    8. import javax.microedition.lcdui.Canvas;  
    9. import javax.microedition.lcdui.Graphics;  
    10. import javax.microedition.lcdui.Image;  
    11.   

    12.  
    13.   
    14. /** 
    15.  * 类名:GameCanvas.java 
       编写日期: 2006-11-29 
       程序功能描述:
       
    16.  * 实现双缓冲的Game画布。实现原理是创建一个BufferImage。然后绘制,最后显示出来。就这么简单。
       Demo: 
       Bug:
       
    17.  * 
       
    18.  *  
    19.  * 程序变更日期 :
       变更作者 :
       变更说明 :
       
    20.  *  
    21.  * @author wuhua 
       
       
    22.  */  
    23. public abstract class GameCanvas extends Canvas {  
    24.   
    25.     /** 
    26.      * 绘制缓冲的图片。用户绘制资源的时候都是操作这个图片来进行的 
    27.      */  
    28.     private Image bufferImage;  
    29.   
    30.     private int height;  
    31.   
    32.     private int width;  
    33.   
    34.     private int clipX, clipY, clipWidth, clipHeight;  
    35.   
    36.     private boolean setClip;  
    37.   
    38.     protected GameCanvas() {  
    39.   
    40.         super();  
    41.   
    42.         width = getWidth();  
    43.         height = getHeight();  
    44.   
    45.         this.bufferImage = Image.createImage(width, height);  
    46.   
    47.     }  
    48.   
    49.     protected void paint(Graphics g) {  
    50.         //如果要求绘制指定区域的话就需要这样了  
    51.         if (this.setClip) {  
    52.             g.clipRect(this.clipX, this.clipY, this.clipWidth, this.clipHeight);  
    53.             this.setClip = false;  
    54.         }  
    55.         g.drawImage(this.bufferImage, 00, Graphics.TOP | Graphics.LEFT);  
    56.   
    57.     }  
    58.   
    59.     public void flushGraphics(int x, int y, int width, int height) {  
    60.         this.setClip = true;  
    61.         this.clipX = x;  
    62.         this.clipY = y;  
    63.         this.clipWidth = width;  
    64.         this.clipHeight = height;  
    65.   
    66.         repaint();  
    67.         serviceRepaints();  
    68.     }  
    69.   
    70.     public void flushGraphics() {  
    71.         repaint();  
    72.         serviceRepaints();  
    73.     }  
    74.   
    75.     /** 
    76.      * 设计者主要是通过调用这个方法获取图片。然后就可以绘制了 
    77.      * @return 
    78.      */  
    79.     protected Graphics getGraphics() {  
    80.         return this.bufferImage.getGraphics();  
    81.     }  
    82.   
    83.     /** 
    84.      * 这个方法主要是处理Nokia平台,用户调用setFullScreenMode(boolean enable) 时重新按照新的w & h创建缓冲图片 
    85.      */  
    86.     protected final void sizeChanged(int w, int h) {  
    87.         if (h > height) {  
    88.             this.bufferImage = Image.createImage(w, h);  
    89.         }  
    90.     }  
    91. }  
     

    发表于 @ 2007年03月31日 21:25:00|评论(loading...)|编辑

    新一篇: 号称一女程序员的强贴 | 旧一篇:  如何在MIDP中实现图片放缩(转自linuxmine)

    评论:没有评论。

    发表评论  


    登录
    Csdn Blog version 3.1a
    Copyright © 无花