MIDP 2.0: The Game API
by Mikko Kontio
-01/09/2003
翻译:
bolow
MIDP 2.0
为
移动设备提供了众多新的特性,主要表现在媒体的支持,增强的
Ui
接口,更多的网络协议,
OTA
以及安全性等方面。然而最让我们感兴趣的是游戏
api
的新特性。本文意在通过一些例子来介绍新的游戏
API
类及其用法。例子调试环境为
J2ME Wireless Toolkit 2.0 Beta.
游戏
API
游戏
API
帮助开发者
(
游戏开发者或者其他需要更好
ui
界面的开发者
)
帮助用户快速开发实用并且节省内存以及存储空间的程序界面。
使用
MIDP 1.0 game
开发者必须定义自己的一套图像类来获得好的界面及程序性能
,这必然会增加程序存储方面的开销,使你的
jar
文件变得更大。新的游戏
api
可以解决这些问题。
游戏
API
的基本思想是游戏界面由图层组成。背景可以在一个图层上,而游戏人物可以在另一个图层上。
每一个图层都可以分别被
游戏
API
控制。
按照经验,游戏的额场景通常会比手机的屏幕大,所以在传统的方法中控制屏幕的滚动是一件很痛苦的事情。
新的游戏
API
一个新的观察窗口(
view window
),通过它可以看到所有的游戏场景,并且它可以很容易的被移动很定位。
游戏
API
的路径为
javax.microedition.lcdui.game
。这五个新的类是:
GameCanvas
,
Layer
,
LayerManager
,
Sprite
,
TiledLayer
.
GameCanvas
是一个提供了游戏的基本接口的抽象类。这个类与
Canvas
类相比有两个优点:
1
。它拥有屏幕缓冲,
2
。它可以直接得到设备键盘的物理状态。
Layer
是一个定义了游戏元素的抽象类。
Sprite
和
TiledLayer
继承了这个类。
Layer
是一个非常常用的类。
LayerManager
负责管理
Layer
对象,并且按照指定的顺序画他们。
Sprite
包含了若干帧图像的
Layer
。这些帧保存在
Image
对象中。
通过
Sprite类我们可以只使用其中的部分帧,或者通过播放一个帧的序列来创建一个动画。
Sprite类还能检查它是否与其他的Sprite类
或者
TiledLayers
有重合。
TiledLayer
和
Sprite有点相似,但是它更多的被用来创建背景,比如赛道或者其他更大的区域。TiledLayer
包含一个表格(
a grid of cells
)
,
我们可以用图像或者文字来填充他。所以说一个背景或者一个场景是可以用一系列的小图片来创建的。
Handling user input
在
MIDP 2.0
中,传递用户的输入与
MIDP 1.0
有所不同
.
在
1.0
中你需要
Canvas的 getGameAction()方法
来得到游戏中用户的按键。
在
2.0
中你可以调用
GameCanvas
的
getKeyStates()
方法来直接得到键盘的状态。
下面是一个示例代码。
首先我们得到键盘的状态
,然后通过
bit操作判断方向键的状态后作出相应的响应。
protected void keyPressed(int keyCode) {
int move = 0;
int keyState = getKeyStates();
if ((keyState & LEFT_PRESSED) != 0) {






