J2ME手机游戏开发详解
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.6 低级用户界面

游戏开发中最常用的是MIDP所提供的低级用户界面,处理方法都在javax.microedition.lcdui里面,主要是如下几个类:Display、Graphics、Canvas、Font、Image。

1.6.1 Display类的使用

Display类代表设备显示上下文,代表当前屏幕的显示对象,由于只能显示一个屏幕,因此,Display对象是Singleton类型对象,需要通过getDisplay()来取得。当调用setCurrent()方法时,便将一个可显示屏幕画面(Displayable的子类)作为参数在屏幕上显示出来。

每当Display的setCurrent方法得到Canvas子类作为参数时,MIDP系统会执行paint方法并将Graphics对象当作参数。使用Canvas类的getWidth()、getHeight()两个方法取得屏幕的长、宽。

1.6.2 Image类的使用

处理图形时会使用到Image类,根据Image类的产生方式可以分为可修改的和不可修改的两种类型。可以调用isMutable()方法查询Image类是否可以修改,还可以通过getWidth(),getHeight()方法取得Image对象的尺寸。

1.6.3 Graphics类的使用

Graphics类代表了绘制笔触,取得Graphics对象有两个方法:用paint()方法传入参数,还可以用Image类的getGraphics()方法得到Graphics对象。前者用于绘制屏幕,后者用于改变可更改图像。

Graphics对象的setColor()方法用来设置像素的颜色。MIDP中不提供设置前景色、背景色的方法,所以必须通过填充来处理。

Graphics类提供了多种绘制方法,如下:

● 绘制文字:可以调用drawChar()、drawChars()、drawString()方法。

● 绘制图形:调用drawImage()方法。

● 绘制线:调用drawLine()方法,该方法有4个参数,分别表示x,y起点左边坐标,x,y终点坐标。

● 绘制弧形:调用drawArc()方法,该方法有6个参数,其中,前4个参数表示弧形所在的矩形范围的坐标,第5个参数决定起始角度,第6个参数决定弧形所涵盖的角度。

● 绘制矩形:调用drawRect()方法,该方法有4个参数,分别表示x,y起点坐标、宽、长。

● 绘制圆角矩形:调用drawRoundRect()方法,该方法有6个参数,其中,前4个参数表示弧形所在的矩形范围的坐标,第5个参数表示圆角所在矩形的宽度,第6个参数表示矩形的高度。

● 填充弧形:调用fillArc()方法,该方法有6个参数,其中,前4个参数决定弧形所在矩形的范围,第5个参数决定起始角度,第6个参数决定弧形所涵盖的角度。

● 填充矩形:调用fillRect()方法,该方法有4个参数,分别表示x,y起点坐标、宽、长。

● 填充圆角矩形:调用fillRoundRect()方法,该方法有6个参数,其中,前4个参数表示弧形所在的矩形范围的坐标,第5个参数表示圆角所在矩形的宽度,第6个参数表示矩形的高度。

1.6.4 键盘事件处理

要开发手机游戏,不得不设计游戏画布类,该类有两个常用的方法:paint()和keyPressed()。前者用于绘制屏幕,后者用于处理键盘事件。

当Canvas子类当前被显示时,只要敲击键盘就会引发keyPressed()方法;松开时会响应keyReleased()方法;而长时间按下同一个键则调用keyRepeated()方法。

当按键事件发生时,MIDP用一些键盘码来代表键盘事件,如KEY_NUM0~KEY_NUM9及KEY_STAR、KEY_POUND,这是所有设备都应当支持的常数,但具体的数值根据设备的不同也会有所不同。

为了游戏设计的方便,Canvas类还定义了几个Game键盘代码:UP、DOWN、LEFT、RIGHT、FIRE,以及GAME_A、GAME_B、GAME_C、GAME_D,同时定义了getGameAction()和getKeyCode()两个方法来处理键盘码和游戏事件的相互转化。