- 4
- 0
- 约4.45万字
- 约 46页
- 2016-08-05 发布于重庆
- 举报
LongSCUJ2ME第5章
第5章 MIDP低级界面开发
本章学习要点:
● 了解Canvas的基本概念 ● 了解Graphics的基本概念
● 掌握绘图的基本开发过程 ● 掌握字体的基本开发过程
● 掌握双缓存的开发技术 ● 掌握欢迎界面的编写技巧
MIDP高级界面开发中,MIDP本身提供了大量的控件API开发类,使用这些控件可以简化开发时间,但是有利就有弊。正是由于这些控件类使用了抽象的方法,把具体的实现细节隐藏了,开发人员只能够根据已有的模式进行开发,如果想根据自己的意愿更改控件的形状和实现一些特殊的功能将是非常困难事情。因此,如果希望构造自己屏幕类或者控件,则可以使用低级界面开发API。
5.1 Canvas类的开发简介
正如高级界面屏幕都是继承Screen类,低级界面屏幕都是继承一个名为Canvas的屏幕类。Canvas类提供了一系列键盘低级事件和绘图接口。具体绘图的操作则由一个名为Graphics的图形类来完成。
5.1.1 Canvas简介
Canvas的中文意思是画布,即表示可以在它上面绘制不同的图案。因此Canvas本身提供了一个绘图接口函数Paint(Graphics g),凡是继承Canvas的继承类都必须实现Paint函数,因此可以在Paint函数中实现屏幕的绘画代码。因此继承Canvas的继承类的程序结构如下所示:
1 Class MyCanvas extends Canvas{
2 ......
3 protected void paint(Graphics g){
4 ......
5 }
6 ......
7 }
paint函数中传入了Graphics类型的参数g,具体的绘画将由Graphics对象g实现。由此可以看出Canvas类和Graphics类的关系是画布和画笔的关系,如图5-1所示:
图5-1 Canvas和Graphics关系图
5.1.2 按键事件
使用Canvas类的一个优点就是可以获得键盘输入的按键代码。在Canvas类中处理按键代码的接口函数有keyPressed、keyReleased和keyRepeated函数,分别处理当一个键被按下,一个键被放开和一个键被按住不放这3种情况。在继承Canvase的类中只要重载这3个函数,当一个键被按的时候,按键代码自动会传输给这3个函数。例如以下代码重载了keyPressed函数:
1 Class MyCanvas extends Canvas{
2 ......
3 protected void paint(Graphics g){
4 ......
5 protected void keyPressed(int keyCode){
6 //根据参数keyCode判断具体哪个键被按下了
7 }
8 }
9 ......
10 }
MIDP定义的数字键的键盘码是: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){
if(keyCode == KEY_NUM0){}
}
但是有时候可能传输过来的键盘代码是Unicode字符,处理的方法如下:
protected void keyPressed(int keyCode){
if(keyCode 0){
char ch = (char)keyCode;
if(ch == ‘0’){
}
}
}
但是键盘上的方向键和确定键并没有具体的对应值,在MIDP2.0中添加了对这些按键的判断,以方便这些键在游戏开发中的应用。因此可以通过getGameAction函数进行处理键盘代码,经过getGameAction函数转换的键盘码有5个值:UP、DOWN、LEFT、RIGHT和FIRE,分别代表上下左右和Select键。
具体处理方向键键盘码的代码如下所示:
11 protected void keyPressed(int keyCode){
12 int g = getGameAction(keyCode);
13 if(g == UP){
14 }
15 if(g == DOWN){
16 }
17 }
5.1.3 触摸事件
有的手机支持触摸屏的输入,因此Canvas提供了以下3个函数获得当前触摸点的座标:
prot
原创力文档

文档评论(0)