1 / 23

《 J2ME 程序开发设计(上) 》 专业教程 理论讲解部分 Ver 3.1

《 J2ME 程序开发设计(上) 》 专业教程 理论讲解部分 Ver 3.1. 课程概述. Canvas 类概述 绘制和重绘屏幕 低级事件. 重点. 绘制和重绘屏幕 低级事件. 掌握 J2ME 低级用户界面. 难点. 绘制和重绘屏幕 低级事件. 学习目标. 6.1 Canvas 类. 6.1.1 Canvas 类概述. 低级用户界面主要用作游戏程序的开发,以及其他需要对屏幕精确控制或者接收低级事件的应用程序。利用低级用户界面 API ,开发者可以对设备进行更精确的控制,但更大的灵活性意味着更少的可移植性。. 6.1 Canvas 类.

edythe
Download Presentation

《 J2ME 程序开发设计(上) 》 专业教程 理论讲解部分 Ver 3.1

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 《J2ME程序开发设计(上)》 专业教程 理论讲解部分 Ver 3.1

  2. 课程概述 Canvas类概述 绘制和重绘屏幕 低级事件 重点 绘制和重绘屏幕 低级事件 掌握J2ME低级用户界面 难点 绘制和重绘屏幕 低级事件 学习目标

  3. 6.1 Canvas类 6.1.1 Canvas类概述 低级用户界面主要用作游戏程序的开发,以及其他需要对屏幕精确控制或者接收低级事件的应用程序。利用低级用户界面API,开发者可以对设备进行更精确的控制,但更大的灵活性意味着更少的可移植性。

  4. 6.1 Canvas类 6.1.1 Canvas类概述 Canvas是Displayable的直接子类,属于J2ME中的低级API。用户利用这些低级API可对设备精确控制,如绘制像素、接收原始的用户输入事件等。 Canvas与高级API相比控制更加灵活,但同时是以其复杂性、高成本为代价的,并牺牲了一定的可移植性。它的基本用法与其他Displayable对象一致。

  5. 6.1 Canvas类 6.1.1 Canvas类概述 Canvas类是Displayable类的子类,它提供了绘制方法以及应用程序的一些低级事件处理方法。 由于Canvas类的paint方法被声明为抽象方法,所以Canvas类也是一个抽象类。在建立Canvas子类的时候,要求程序提供paint方法的实现。 而低级事件处理方法未声明为抽象方法,其默认实现为空。

  6. 6.1 Canvas类 6.1.1 Canvas类概述 显示屏幕上能够实际用于绘制的区域因设备的不同而有所差异。因此为了保证应用程序具有较好移植性,一般不直接设定好屏幕的尺寸,而是通过调用getHeight()和getWidth()方法来获得具体尺寸。 获取屏幕宽度: int width = getWidth(); 获取屏幕高度: int height= getHeight();

  7. 6.1 Canvas类 6.1.1 Canvas类概述 Canvas的坐标原点位于左上角,其最下角的坐标为(getWidth(),getHeight())。 屏幕的上部分为设备保留部分,用来向用户指示电量、信号强度、设备状态等。 下面部分用于MIDP设置菜单等,既可以是应用程序设置的Command软键,也可以是MIDP实现自动设置的菜单等软键,其位置由系统决定。

  8. 6.1 Canvas类 6.1.2 绘制和重绘屏幕 paint(Graphics g)方法用来绘制屏幕。这个方法是一个抽象方法,应用程序必须实现这个方法才能够绘制图形。如果在Canvas的子类中没有实现这个方法,将会报告编译错误。 paint方法被传入一个Graphics对象g,g所设置的矩形区域定义了屏幕上可绘制的区域,也就是需要重绘的区域。而应用程序不需要去了解paint调用的底层实现。 public void paint(Graphics g) { g.setColor(200,200,255) ; g.fillRect(0,0,getWidth(),getHeight()) ; }

  9. 6.1 Canvas类 6.1.2 绘制和重绘屏幕 在绘制屏幕时,程序中不直接调用paint()方法。当把Canvas的子类对象作为参数设置在setCurrent()方法中时,程序会去自动调用paint()方法。 MyCanvas mc = new MyCanvas() ; display.setCurrent(mc) ;

  10. 6.1 Canvas类 6.1.2 绘制和重绘屏幕 重绘时,在应用程序中同样不应该直接调用paint()方法来实现,而应该使用repaint()方法。调用repaint()方法会使系统调用paint()方法。 repaint();

  11. 6.1 Canvas类 6.1.3 低级事件 应用程序接受按键事件,对于要向MIDP应用程序报告事件的每个按键都被分配一个按键代码,每个物理键所对应的按键代码的值惟一的。 MIDP定义了按键代码,这些按键代码符合ITU-T标准电话键盘所定义的按键。在键盘上可能会出现其他按键,为了保证可移植性,应用程序应该只使用标准的按键代码。

  12. 6.1 Canvas类 6.1.3 低级事件 Canvas类关于按键定义的常量:

  13. 6.1 Canvas类 6.1.3 低级事件 Canvas类定义了下列几个按键事件: protected void keyPressed(int keyCode) 当按键被按下时调用; protected void keyReleased(int keyCode) 当按键被释放时调用; protected void keyRepeated(int keyCode) 当按键重复时(保持按下)调用。

  14. 6.1 Canvas类 6.1.3 低级事件 当按键被按下时,就会触发keyPressed事件,系统会自动调用keyPressed(int keyCode)方法,所按下的物理键盘对应于键码,程序在获知键码的同时,也就是知道用户按下了什么键,便能够对这个事件进行处理。 public void keyPressed(int keyCode){ System.out.println("按下了" + getKeyName(keyCode) + " ,其值为:" + keyCode); }

  15. 6.1 Canvas类 6.1.3 低级事件 当按键按下再释放后,会触发keyReleased事件。同keyPressed事件一样,Canvas类中的这个方法的实现是空的,应用程序要监听按键释放的事件,必须重载keyReleased()方法。 public void keyReleased(int keyCode){ System.out.println("释放了" + getKeyName(keyCode) + " ,其值为:" + keyCode); }

  16. 6.1 Canvas类 6.1.3 低级事件 当用户在很短的时间里连续按了两次同样的键,就会触发一个重复按键事件keyRepeated。有些设备支持重复按键事件,有些不支持。应用程序可以使用 检查设备是否支持重复按键事件: public boolean hasRepeatEvents()

  17. 6.1 Canvas类 6.1.3 低级事件 在手机游戏开发中,经常使用游戏动作来代替键码。Canvas中定义了游戏动作常量 :

  18. 6.1 Canvas类 6.1.3 低级事件 虽然每一个键码都被映射给一个游戏动作,但是一个游戏动作也可以和多个键码相关联。两者之间的转化是通过getKeyCode()和getGameAction()方法完成的。 游戏动作是如何与键码进行映射要根据具体设备来决定。例如,在某些设备上,游戏动作UP、DOWN、LEFT和RIGHT可能被映射到4个导航键上,而在其他设备上,它们可能被映射到某些数字键上。应用程序可以使用getGameAction()方法来将键码转换为游戏动作,从而增强了程序的可移植性。

  19. 6.1 Canvas类 6.1.3 低级事件 对于触摸屏而言,指针可以是接触屏幕的任何物体,通常是一支输入笔。有3种类型的指针事件:指针接触事件、指针释放事件以及指针拖动事件。相应地,也有3种类型的 指针处理方法。如下: (1)protected void pointerDragged(int x,int y),当指针拖动时调用; (2)protected void pointerPressed(int x,int y),当指针按下时调用; (3)protected void pointerReleased(int x,int y),当指针释放时调用。 参数x和y分别是和Canvas相对应的指针的位置。应用程序如果要使用指针事件,就必须实现以上方法。

  20. 本课小结 理解Canvas类结构 掌握绘制和重绘屏幕 掌握低级事件

  21. 小测验 判断题 1. canvas比screen灵活性更高,复杂性更低() 2. canvas可以用来开发需要精确显示的图形() 3. Graphics可以在canvas中随时获取()

  22. 小测验答案 判断题 1. canvas比screen灵活性更高,复杂性更低(错) 2. canvas可以用来开发需要精确显示的图形(对) 3. Graphics可以在canvas中随时获取(错)

  23. 课后作业 【作业】编写程序,练习使用低级用户事件

More Related