`
wangxc
  • 浏览: 213055 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

J2me低级UI界面中Canvas类与GameCanvas类

    博客分类:
  • J2ME
阅读更多
关于MIDlet类中destroyApp(参数)问题:
    在destroyApp()方法中的参数为Boolean类型,destroyApp是一个callback,它是一个接口或者说一个协议。
    当参数为false时,被调用MIDlet可以选择是否被关闭。如果选择被关闭,那么MIDlet就应该在destroyApp返回之前做好被关闭的准备,否则就抛出MIDletStateChangeException,然后再调用notifyDestroyed();来通知应用程序管理器来销毁程序。
     当参数为true时,MIDlet会清空和回收所有资源。

GameCanvas类是继承Canvas类的一个抽象类,它提供了游戏的借口,它的主要功能为,提供屏幕缓冲绘制机制,并能直接得到设备键盘的物理状态。它在Canvas类的基础上增加了双缓冲和随时查询按键状态的功能。
  
GameCanvas的构造方法,protected GameCanvas(boolean suppressKeyEvents),参数表示是否需要处理游戏按键之外的其他按键事件。例如数字键,如果此参数为false时,那么按键事件处理方法keyPressed()、keyRepeated()、keyReleased()在程序运行过程中不会被调用,这样可以提高程序的运行速度和性能。
    GameCanvas为这个类的每个实例提供了惟一的图形缓冲区,所有的图形创建和修改都在缓冲区上进行,缓 冲区的大小和GameCanvas全屏幕时的大小一样,但是存在的Ticker或者Command等控件都会影响到GameCanvas的大小。 缓冲区的颜色初始化为白色。
    GameCanvas绘制的图形存在于后备缓冲区中,不会立即被显示出来,直接调用flushGraphics()方法,才能将缓冲区中的内容一起绘制到屏幕上。
    绘制实际屏幕的操作不会改变后备屏幕的内容,这个方法会一直等到绘制操作完成后才返回,因此,当这个方法返回 时,应用程序可以立刻对缓冲区进行下一帧后备屏幕的绘制。
    如果GameCanvas当前没有显示,或者系统忙而不能执行绘制请求,该方法不进行任何操作就立刻返回。

     GameCanvas中的对getGraphics()和flushGraphics()方 法的调用换成Canvas中repaint()以及serviceRepaints()方法的调用,两者没有什么明显的区别,但是如果程序包含了很多复杂 的图形。
   
    GameCanvas和Canvas的按键状态的响应是不一样的。使用Canvas类,如果想 知道按键状态,必须实现keyPressed()/keyReleased()/keyRepeated(),每当有按键被按下时,这个方法就被调用,而使用GameCanvas类,如果要检查特定的按键是否被按下,只需要将getKeyStates()返回的值与这些键值进行按位与(&),并根 据计算结果来判断即可。
    如果希望当游戏运行时,禁止调用KeyPressed()/keyReleased() /KeyRepeated()方法,那么就可以在构造GameCanvas时,在super()中传入true值。如果传入false值,那么一旦按键按 下,就会调用传统的键盘事件处理方法。
     注意: 键盘的抑制只对当前的GameCanvas有效,并且只能抑制Canvas预定义的键盘事件(例如无法抑制手机上的'*'号键,'#'号键,以及接听、挂断键等功能键)

   repaint和serviceRepaints 区别:
     repaint提出paint请求,但是这是repaint不会立即执行重画,它的执行是不可以控制的,如果在repaint的后面添加serviceRepaints,那么所有已经排队的paint请求会被立即处理,在中间调用serviceRepaints时其他的线程会被阻塞
  
 

分享到:
评论
1 楼 一点寒意 2011-03-01  

相关推荐

    J2me UI库类 基于低级界面

    基于低级界面的j2me UI库类,有demo和源码。高级界面的东西虽然好用但是在不同的手机上面显示得不一样,有的好看有的很丑,但是基于低级界面的就不一样了。在不同手机上显示出来都是一样的,这个UI库类是企业级的。...

    j2me低级UI文字分行

    本文将详细介绍如何在J2ME低级用户界面(UI)中实现文字的分行功能,并提供一个实用的函数示例。 首先,我们要理解的是,文字分行的核心在于找到合适的位置将字符串分割为多个适合指定宽度的子字符串。在给定的代码...

    j2me 低级UI制作菜单 例子

    由于资源有限,J2ME提供了两种主要的UI框架:高级UI(MIDP CLDC)和低级UI(通常基于Graphics类)。本教程将深入探讨如何使用低级UI来构建菜单和简单的通讯录应用。 首先,我们要理解低级UI的基本概念。低级UI是...

    J2ME低级界面全示例Eclipse

    在J2ME中,低级界面通常涉及使用Graphics类和Canvas类。Graphics类提供了一系列方法,用于绘制基本图形元素,如线条、矩形、圆以及文本。Canvas是J2ME中的一个基础类,它继承自Component,并且是创建自定义显示界面...

    j2me低级图形界面输入法实现

    J2ME平台的UI界面分为两种,...如果想界面美观只能用低级界面来画出来。这样就出现一个问题,当涉及到输入文字的时候,还是会回到高级界面调用手机本身的输入法,这给程序的美观性大打折扣,这个程序实现了拼音输入法。

    J2ME高级UI总结

    在J2ME中处理触摸屏事件主要依赖于MIDP(Mobile Information Device Profile)的低级图形API,如`Graphics`类和`Pointer`接口。开发者需要监听`PointerEvent`,通过`PointerEvent.getX()`和`PointerEvent.getY()`...

    J2ME低级界面汉字输入

    "J2ME低级界面汉字输入"这个主题主要探讨的是如何在J2ME的低级界面,尤其是Canvas类中实现汉字的输入功能。Canvas是J2ME提供的一种基本绘图界面,它不支持标准的用户输入控件,因此在Canvas上实现汉字输入并不直观,...

    j2me 低级界面 输入法 源文件

    这是我业余时间写的一个J2ME低级界面下的输入法 字库内置在类中 混淆后jar包40K左右 输入法实现了最基本的功能 像拼音 英文大小写 数字 标点 文字显示框为多行编辑模式 在以后的版本更新中会增加触摸屏的支持 输入...

    J2ME低级Canvas实现九宫图

    Canvas是J2ME提供的一个基础图形界面类,它允许开发者直接在设备屏幕上进行绘图和事件处理。在实现九宫图时,我们需要自定义一个Canvas子类,并重写关键方法,如`paint()` 和 `keyPressed()`。 1. **自定义Canvas...

    MIDP-canvas.rar_J2ME 界面_MIDP canvas_canvas_canvas j2_j2me

    Canvas 是J2ME MIDP中的一个类,继承自 javax.microedition.lcdui.Graphics 类,提供了直接绘制像素的能力。通过Canvas,开发者可以创建自己的图形界面,而不仅仅是使用预定义的组件。这为创建复杂的游戏和图形应用...

    j2meUI低级界面开发实例

    本篇将深入探讨 J2ME UI 的低级界面开发实例,包括图片加载和按钮选择等功能。 首先,我们要理解 J2ME UI 开发的基础组件,主要由 MIDP (Mobile Information Device Profile) 提供。MIDP 包含了 CLDC (Connected ...

    j2me低级界面字符串自动换行代码包

    在J2ME中,低级界面通常指的是使用原生的用户界面组件,如Midlet、Canvas或者Graphics类,而不是高级的轻量级用户界面框架(如MIDP的CLDC)。这些低级接口提供了更多的控制,但同时也需要开发者手动处理更多的细节,...

    J2ME 低级画布实现中文输入

    在J2ME中,低级画布(Custom Canvas)是继承自`javax.microedition.lcdui.Canvas`类的自定义类。开发者通常会重写`paint()`方法来实现自己的绘图逻辑。然而,对于中文输入,单纯依赖Canvas的默认功能是不够的,因为...

    j2me低级api与事件demo.rar

    在J2ME中,事件处理是通过实现特定的Canvas类或使用Listener接口来完成的。Canvas是用户界面的基本元素,可以自定义绘图和响应用户输入。事件处理通常涉及到键盘事件、触摸屏事件和系统事件。 3. **...

    j2me高级界面和低级界面的切换

    这篇博客“j2me高级界面和低级界面的切换”可能探讨了如何在MIDP应用中有效地在Form和Canvas之间进行导航。通常,这涉及到以下几个关键知识点: 1. **Form**:Form是MIDP中的一个基本组件,用于展示文本和可选的...

    J2ME高级UI编程源码

    这通常涉及到对Canvas类的扩展,Canvas类是J2ME中用于绘制自定义图形的基类。开发者可以重写Canvas的`paint()`方法,通过Graphics对象进行图形绘制。 3. **事件处理** 在J2ME中,事件处理是UI交互的核心。我们可以...

    J2me中低级界面字体处理.doc

    在J2ME(Java 2 Micro Edition)编程中,低级界面的字体处理是一个关键的环节,这直接影响到应用程序的视觉效果和用户体验。在J2ME中,我们不能像在高级用户界面那样自由选择各种字体,因为手机设备的资源限制,只能...

    J2ME源码,低级界面输入数字

    本主题聚焦于J2ME中的一个特定技术点:在低级界面上输入数字。这个话题对于那些想要深入理解J2ME应用程序开发,特别是涉及用户交互的开发者来说至关重要。 J2ME通常分为两部分:KVM(K Virtual Machine)和MIDP...

    J2ME低级用户界面,游戏引擎

    非官方详细的资源描述有机会获得我们的推荐,更有利于他人下载,赚取更多积分。

    J2ME三种低级用户界面事件处理技术比较

    在J2ME(Java 2 Micro Edition)的低级用户界面编程中,事件处理是一项核心技能,尤其对于手机键盘事件的处理至关重要。其中,覆盖`keyPressed`方法是最直接且常见的做法。当开发者继承`Canvas`类创建界面时,可以...

Global site tag (gtag.js) - Google Analytics