使用 MIDP 底层用户接口 API(2)
protected void pauseApp(){
}
protected void destroyApp( boolean unconditional ){
}
public void exit(){
destroyApp( true );
notifyDestroyed();
}
}
尽管这个MIDlet能工作,它有一个问题:没有明显的方式可以从它退出。你需要引导用户以某种方式输入。有两种方式可以实现:使用行输入事件或使用命令事件。
Canvas允许使用行输入事件,是通过覆盖canvas类定义的适当的事件发送方法来实现的。事件生成的可用方法有:
按键(keyPressed,keyRepeated,和keyReleased)
使用指针(pointerPressed,pointerDragged和pointerReleased)如果指针在设备上可以使用的话
显示canvas(showNotify,hideNotify)
例如,你可以增加一种方式结束应用,通过在canvas中定义一个keyPressed事件:
protected void keyPressed( int keyCode ){
((MyMIDlet) midlet).exit();
}
在所有的键盘事件中,keycode识别按键并激发事件。正值表示Unicode字符,而负值是一个键无法被直观的转换成Unicode。为了避免区分哪一个键表示哪一个,这种有不同设备确定的问题,canvas类为常用键定义了一些限制。特别是,它定义了抽象游戏行为(UP, DOWN, LEFT, RIGHT, FIRE, GAME_A, GAME_B, GAME_C, 和GAME_D)它们的键盘代码映射图可以实时定义。在它初始化过程中,设备可以调用canvas.getGameAction来确定哪种键盘映射更适合于操作。
你可以定义一个基础类,就象:
public abstract class GameCanvas extends Canvas {
protected MIDlet midlet;
protected int fireKey;
protected int leftKey;
protected int rightKey;
protected int upKey;
protected int downKey;
public GameCanvas( MIDlet midlet ){
this.midlet = midlet;
fireKey = getKeyCode( FIRE );
leftKey = getKeyCode( LEFT );
rightKey = getKeyCode( RIGHT );
upKey = getKeyCode( UP );
downKey = getKeyCode( DOWN );
}
}
然后,扩展它,就象:
public class MyCanvas extends GameCanvas {
相关新闻>>
- 发表评论
-
- 最新评论 更多>>