`
lixinye0123
  • 浏览: 336082 次
  • 性别: Icon_minigender_1
  • 来自: 温州
社区版块
存档分类
最新评论

深入分析J2ME平台MIDP低级事件处理机制

    博客分类:
  • Java
阅读更多
通常低级事件的处理是为了满足游戏开发的需要,因为游戏开发相关的问题非常复杂。因此不在这里进行阐述,有兴趣的朋友可以和我索要相关的游戏开发资料。MIDP定义了如下键值在Canvas类内:
  
  KEY_NUM0
  KEY_NUM1
  KEY_NUM2
  KEY_NUM3
  KEY_NUM4
  KEY_NUM5
  KEY_NUM6
  KEY_NUM7
  KEY_NUM8
  KEY_NUM9
  KEY_STAR
  KEY_POUND
  这些都是按键基本值,当然有些手机是触摸屏的。事件的传递是通过如下方法来实现的。
  
  protected void keyPressed(int keyCode)
  protected void keyReleased(int keyCode)
  protected void keyRepeated(int keyCode)
  protected void pointerPressed(int x, int y)
  protected void pointerDragged(int x, int y)
  protected void pointerReleased(int x, int y)
  protected void showNotify()
  protected void hideNotify()
  protected abstract void paint(Graphics g)
  commandAction() method of the CommandListener interface
  开发者应该继承Canvas类的同时覆盖相应的方法来实现低级事件的处理,低级事件的处理是连续的、串行的,在前面的事件返回之前后面的事件不会执行,当然也有例外,你可以参考API doc得到答案。下面是一个例子,它的功能就是在屏幕上显示出你按下键的键值,界面非常简单因此没有抓图。代码如下所示:
  
  //LowLevelMIDlet.java
  
  import javax.microedition.lcdui.Display;
  import javax.microedition.midlet.MIDlet;
  import javax.microedition.midlet.MIDletStateChangeException;
  
  /*
  * Created on 2004-6-24
  *
  * TODO To change the template for this generated file go to
  * Window - Preferences - JAVA- Code Style - Code Templates
  */
  
  /**
  * @author P2800
  *
  * TODO To change the template for this generated type comment go to Window -
  * Preferences - JAVA- Code Style - Code Templates
  */
  public class LowLevelMIDlet extends MIDlet
  {
  
  private Display display;
  private KeyCanvas keyCanvas;
  
  /*
  * (non-Javadoc)
  *
  * @see javax.microedition.midlet.MIDlet#startApp()
  */
  protected void startApp() throws MIDletStateChangeException
  {
  // TODO Auto-generated method stub
  display = Display.getDisplay(this);
  keyCanvas = new KeyCanvas();
  display.setCurrent(keyCanvas);
  
  }
  
  /*
  * (non-Javadoc)
  *
  * @see javax.microedition.midlet.MIDlet#pauseApp()
  */
  protected void pauseApp()
  {
  // TODO Auto-generated method stub
  
  }
  
  /*
  * (non-Javadoc)
  *
  * @see javax.microedition.midlet.MIDlet#destroyApp(boolean)
  */
  protected void destroyApp(boolean arg0) throws MIDletStateChangeException
  {
  // TODO Auto-generated method stub
  
  }
  
  }
  
  //KeyCanvas.java
  
  import javax.microedition.lcdui.Canvas;
  import javax.microedition.lcdui.Command;
  import javax.microedition.lcdui.CommandListener;
  import javax.microedition.lcdui.Displayable;
  import javax.microedition.lcdui.Graphics;
  
  /*
  * Created on 2004-6-25
  *
  * TODO To change the template for this generated file go to
  * Window - Preferences - JAVA- Code Style - Code Templates
  */
  
  /**
  * @author P2800
  *
  * TODO To change the template for this generated type comment go to Window -
  * Preferences - JAVA- Code Style - Code Templates
  */
  public class KeyCanvas extends Canvas implements CommandListener
  {
  private String key = "Press any key";
  
  /*
  * (non-Javadoc)
  *
  * @see javax.microedition.lcdui.Canvas#paint(javax.microedition.lcdui.Graphics)
  */
  protected void paint(Graphics g)
  {
  // TODO Auto-generated method stub
  g.setColor(255, 255, 255);
  g.fillRect(0, 0, getWidth(), getHeight());
  g.setColor(0, 0, 0);
  g.drawString(key, getWidth() / 2, getHeight() / 2, Graphics.TOP
  | Graphics.HCENTER);
  
  }
  
  public void keyPressed(int keyCode)
  {
  key = keyCode + " is pressed";
  repaint();
  }
  
  public void keyReleased(int keyCode)
  {
  key = keyCode + " is released";
  repaint();
  }
  
  /*
  * (non-Javadoc)
  *
  * @see javax.microedition.lcdui.CommandListener#commandAction(javax.microedition.lcdui.Command,
  *   javax.microedition.lcdui.Displayable)
  */
  public void commandAction(Command arg0, Displayable arg1)
  {
  // TODO Auto-generated method stub
  
  }
  
  }
分享到:
评论

相关推荐

    j2me低级api与事件demo.rar

    《J2ME低级API与事件处理:深入解析与示例》 J2ME(Java 2 Micro Edition)是Java平台的一个子集,主要用于嵌入式设备和移动设备的开发,如早期的智能手机和平板电脑。J2ME的低级API,也称为CLDC(Connected ...

    J2me月光战机游戏源码.7z

    在J2ME游戏中,事件处理是关键,包括按键输入、触摸屏交互等。游戏源码会包含对KeyManager或PointerEvents的处理,用于响应用户的操作并更新游戏状态。 5. **图形与动画** J2ME提供了低级的图形API,如Graphics类...

    j2me 相关学习课件

    同时,深入理解低级事件处理有助于优化性能和提升用户体验。 **6. 数据存储** J2ME提供了RecordStore API来存储数据,这是非关系型的小型数据库,适用于本地数据存储。学习如何创建、读取、更新和删除记录是必备...

    J2ME射击游戏Demo,源码分析

    综上所述,通过对"J2ME射击游戏Demo"的源码分析,我们可以学习到J2ME游戏开发的基本技巧和最佳实践,包括游戏循环、事件处理、图形绘制、碰撞检测、性能优化以及数据存储等多个方面。这对于想要进入J2ME游戏开发领域...

    j2me手机游戏源码

    1. **游戏架构**:了解如何使用J2ME构建一个完整的游戏框架,包括初始化、游戏循环、渲染更新和事件处理。 2. **图形编程**:学习如何使用低级图形API(如Canvas)来创建2D图形,绘制赛道、车辆和其他游戏元素。 3. ...

    J2ME游戏开发教程 pdf文件

    J2ME游戏通常基于事件驱动模型,游戏循环负责处理用户输入、更新游戏状态并渲染屏幕。良好的游戏设计要考虑性能优化,因为移动设备的处理能力有限。使用低级图形操作,如直接像素操作,可以提高效率。 **4. 图形与...

    自学J2ME_PPT

    最后,“第7章 低级用户界面编程.ppt”可能涉及更底层的图形和输入处理,这通常用于定制化或者优化UI性能,可能会介绍如何直接操作屏幕像素和处理硬件键盘事件。 通过这些章节的学习,初学者可以逐步掌握J2ME的基础...

    精通J2ME无线编程.pdf

    - 事件处理:理解和实现用户交互的事件监听机制。 总之,**精通J2ME无线编程** 教程将带领你走进移动应用开发的世界,通过深入学习J2ME,你将能够开发出能在各种移动设备上运行的应用程序,满足不同场景的需求。...

    基于Java的实例源码-简单模拟的J2ME潜艇大战源代码.zip

    在这个潜艇大战游戏中,开发者可能利用了MIDP的图形库来绘制游戏场景,包括海洋、潜艇、导弹等元素,并通过事件处理实现玩家交互。 游戏的核心部分通常包括以下几个方面: 1. **游戏循环**:这是所有游戏的基础,...

    用J2ME开发手机股票系统实例教程

    - **命令与事件处理**:掌握命令和事件处理机制,以便更好地响应用户的操作。 - **自定义组件**:了解如何创建自定义组件以增强用户界面的交互性和美观性。 #### 四、低级用户界面设计 - **Canvas与Graphics**:...

    J2ME游戏源码---bubble breaker

    3. **事件处理**:MIDP支持键盘和触摸屏事件,开发者需要实现Listener接口处理用户输入。 4. **数据存储**:J2ME可以通过RecordStore API实现本地数据存储,如保存玩家的高分记录。 5. **优化**:由于J2ME设备资源...

    J2ME手机游戏黑暗部落源代码

    通过分析和学习这个【J2ME手机游戏黑暗部落源代码】,开发者可以深入理解J2ME的游戏开发流程,掌握如何在有限的硬件条件下优化性能,以及如何在小屏幕设备上创建吸引人的用户体验。对于想要转行移动游戏开发或者对...

    JAVA基于J2ME的手机游戏开发(文档+源代码).zip

    提供的源代码可以作为学习的实例,通过阅读和理解代码,可以了解到如何组织游戏结构、如何处理事件、如何使用MIDP API进行图形绘制和动画制作等。 7. **文档** 文档可能包含了游戏开发的步骤、API的详细说明以及...

    J2ME 手机程序入门

    Java 2 Micro Edition(J2ME)是Java平台的一个重要组成部分,专门设计用于资源有限的嵌入式设备,尤其是移动设备如智能手机和平板电脑。J2ME提供了丰富的功能,使得开发者能够创建各种类型的应用程序,包括游戏、...

    J2ME冒险游戏CASPER源代码

    通过分析和学习这个"CASPER"游戏的源代码,你可以深入了解J2ME游戏开发的各个方面,包括如何构建游戏循环、处理用户输入、绘制游戏画面、实现游戏逻辑等。这对于想要进入移动游戏开发领域的程序员来说,是一次很好的...

    小子快跑,精美J2ME动作游戏

    通过分析和理解《小子快跑》的源码,开发者可以了解如何在J2ME平台上实现游戏循环、碰撞检测、角色动画、音效处理等核心功能。例如,游戏中的角色移动可能使用定时器来控制帧率,确保流畅的动作;而碰撞检测则可能...

    j2me手机游戏案例精编part2

    1. **游戏框架**:J2ME游戏通常基于自定义的游戏框架,如MIDP提供的Canvas类,开发者需要实现自己的绘图逻辑和事件处理。06.exe、07.exe等可能包含不同的框架实现,展示了如何组织游戏循环、处理用户输入和更新游戏...

    J2ME源代码

    可能包括事件处理、图形绘制、网络通信等方面的示例代码。 2. **chapter08** - 第8章可能涉及的是J2ME中的用户界面(UI)设计,可能涵盖了如何使用Midlet、ChoiceGroup、TextBox等组件来构建交互式的移动应用界面。...

    J2ME中文教程

    4. **低级用户界面及事件处理**: - Canvas类:提供自定义图形绘制的能力,适用于更底层的UI控制。 - 事件模型:监听器接口,如CommandListener,用于处理用户交互事件。 5. **高级用户界面及事件处理**: - ...

Global site tag (gtag.js) - Google Analytics