http://www.3geye.net/bbs/frame.php?frameon=yes&referer=http%3A//www.3geye.net/bbs/viewthread.php%3Ftid%3D301
一个MIDlet应用程序通过调用Canvas方法来探测哪些键盘代码映射到运行的应用程序中的抽象游戏动作:
public static int getGameAction(int keyCode);
Canvas类定义抽象游戏动作集:UP、DOWN、LEFT、RIGHT、FIRE等等。
游戏开发者应该知道MIDP 1.0规范中的一个问题。这个类定义了转化键盘代码到游戏动作的方法,同样也定义了转化游戏动作到键盘代码的方法。
public int getGameAction(int keyCode)
public int getKeyCode(int gameAction)
方法getKeyCode(int gameAction)可能会导致一些问题,因为它只能返回基于游戏动作的一个键盘代码,即使MIDP 1.0允许超过一个键盘代码被实现。在Nokia手机中,个别的一些键盘代码被映射到相同的游戏动作,比如"UP键"和"2键"都被映射为向上的游戏动作。而这个方法只能返回其中之一;返回的值是特定的实现。然而,如果方法getGameAction(int KeyCode)使用"UP键"和"2键"的键盘代码作为参数,这个方法将返回正确的向上的游戏动作。下面来看一个不好的例子,以加深我们的印象:
//不好的例子,不要这么做:
class TetrisCanvas extends Canvas {
int leftKey, rightKey, downKey, rotateKey;
void init (){
//FOLLOWING MUST NOT BE DONE
leftKey = getKeyCode(LEFT);
rightKey = getKeyCode(RIGHT);
downKey = getKeyCode(DOWN);
rotateKey = getKeyCode(FIRE);
}
public void keyPressed(int keyCode) {
if (keyCode == leftKey) {
moveBlockLeft();
} else if (keyCode = rightKey) {
...
}
}
}
下面是更好的解决方案:
class TetrisCanvas extends Canvas {
void init (){
}
public void keyPressed(int keyCode) {
int action = getGameAction(keyCode);
switch (action){
case Canvas.LEFT:
moveBlockLeft();
break;
case Canvas.RIGHT:
moveBlockRight();
break;
}
}
}
这个例子是MIDP 1.0规范中的例子,使用getKeyCode ( int gameAction)处理键盘代码值,只能返回一个值。如果这样的话,其它可能的按键映射就不能在MIDlet中使用了。比如说,在Nokia 7650中就会出现问题,Nokia 7650有五个方向键和一个操纵杆以及普通的键盘布局,上面这个例子就会返回操纵杆的值而不是键盘的值。这是处理事件的一种与设备无关的方法,也是一种不好的方法。更好的解决方法是在keyPressed ()方法内使用getGameAction ( int KeyCode)。通常,应用程序应该避免使用getKeyCode ( int gameAction)方法并且总是使用getGameAction ( int KeyCode)。
自:yesky.com
搜索更多相关主题的帖子: int public keyCode getKeyCode gameAction
分享到:
相关推荐
这篇博客文章“Keycode对照表”提供了一个详细的Keycode与键盘键位的对应关系,帮助开发者更好地理解和处理键盘事件。 Keycode是Android系统中用来表示物理按键的整数值。当用户在设备(如手机或平板电脑)上按下...
2. `getKeyCode(int gameAction)`:与`getGameAction()`相反,它将游戏操作常量转换回按键编码。 3. `getKeyName(int keyCode)`:返回对应于给定按键编码的键名,通常用于显示或日志记录。 4. `hasPointerEvents()`...
2. `getKeyCode(int gameAction)`:将游戏动作转换回按键编码,方便识别具体按键。 3. `getKeyName(int keyCode)`:返回对应按键的名称,便于识别。 4. `hasPointerEvents()` 和 `hasPointerMotionEvents()`:用于...
例如,在JavaScript中,可以使用`event.keyCode`属性来获取当前按键的`keycode`,而在Java中,可以使用`KeyEvent`类的`getKeyCode()`方法来获取相同的信息。对于ASCII码,大多数编程语言都提供了转换函数,将`...
} else if (event.getKeyCode() == KeyEvent.KEYCODE_MEDIA_PREVIOUS) { // 处理上一曲键按下 } break; } } } } } ``` 3. **设置Metadata和PlaybackState** 为了提供正确的反馈,你需要更新`MediaSession`...
Android 长按返回健退出 背景 平常比较常见的都是一定时间间隔内按两次返回键来退出应用,并且第一次点击会有相应的提示,网上资料比较多,这里写一下,长按返回键... if (event.getKeyCode() == KeyEvent.KEYCODE_BA
public boolean onKeyDown(int keyCode , KeyEvent event){ if(event.getAction() == KeyEvent.ACTION_DOWN && event.getKeyCode() == KeyEvent.KEYCODE_BACK){ backProcess(); return true ; } ...
代码如下:public boolean onKeyDown(int keyCode, KeyEvent event) { if (event.getAction() == KeyEvent.ACTION_DOWN && event.getKeyCode() == KeyEvent.KEYCODE_BACK) { return true;//消费掉后退键 } return...
int keyCode = e.getKeyCode(); // 根据keyCode更新角色位置 } // ... } ``` - 创建二维数组存储地图信息: ```java int[][] map = new int[MAP_WIDTH][MAP_HEIGHT]; // 初始化地图数据 ``` - 检测碰撞: ```...
public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN) { if ((System.currentTimeMillis() - exitTime) > 2000) { ...
int keyCode = event.getKeyCode(); if (keyCode ) { return false; } if (mScanGun.isMaybeScanning(keyCode, event)) { return true; } } return true; } @Override public void onCreate() { super...
- 在Java中,`KeyEvent`类提供了`getKeyCode()`方法,返回按下或释放的键对应的`KeyCode`值。 - 在JavaScript中,`event.keyCode`属性用于获取键盘事件中的键码。 - 在C#中,`Keys`枚举类型包含了所有键盘键的`...
Android onKeyDown监听返回键无效的解决办法 当我们的Activity继承了TabActivity,在该类中重写onKeyDown是... if (event.getKeyCode() == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN && e
键盘码映射,图形界面。支持按键获取编码、以及根据编码查询按键。
if (actionId == EditorInfo.IME_ACTION_DONE || event.getAction() == KeyEvent.ACTION_DOWN && event.getKeyCode() == KeyEvent.KEYCODE_ENTER) { editText.setText(""); return true; } return false; }); ...
= null && event.getAction() == KeyEvent.ACTION_DOWN && event.getKeyCode() == KeyEvent.KEYCODE_ENTER)) { // 用户点击了“完成”键或者按下了回车键,认为输入完成 String inputText = editText.getText()....
= null && event.getAction() == KeyEvent.ACTION_DOWN && event.getKeyCode() == KeyEvent.KEYCODE_ENTER)) { editText.setText(""); return true; } return false; } }); ``` 这个“Android高级应用源码-...
int GetKeyCode(); int FindPath(CELL *c1, CELL *c2); void DrawPath(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4, int color); ``` 这些函数分别实现了初始化游戏、游戏主循环、退出游戏、...
总的来说,理解并掌握JavaScript中的`keyCode`对于编写与用户交互的动态网页至关重要。通过这个特性,开发者可以实现丰富的键盘控制功能,提高用户体验,并能更好地响应用户的输入行为。在开发过程中,记住这些键码...