频 道 直 达 - 新闻 - 培训 - 软件 - 教程 - 前沿 - 组网 - 系统应用 - 安全 - 编程 - 存储 - 操作系统 - 数据库 - 服务器 - 专题 - 产品 - 案例库 - 读书 - 博客 - BBS
51CTO.COM_中国最大的网络技术网站
找资料:

6.1.2 游戏按键事件

作者: 荣钦科技 出处:电子工业出版社华章公司  2007-09-18 16:54    砖    好    评论   进入论坛
阅读提示:《J2ME手机游戏设计技术与实战》主要介绍了在手机上开发J2ME游戏的方法,第六章内容为手机游戏界面的介绍。本节为游戏按键事件。

6.1.2  游戏按键事件
由于手机控制游戏的按键实在有限,因此需要对有限的按键控制重新规划。而且不同的手机所支持的按键也会有所不同,例如只有数字键无方向键。此时就必须通过数字键来进行游戏控制设计,如示例6-2MIDP中定义了如下游戏执行按键:UP、DOWN、LEFT、RIGHT、FIRE、GAME_A、GAME_B、GAME_C和GAME_D,相关应用说明如下:

public static final int UP
游戏中执行向上动作。
public static final int DOWN
游戏中执行向下动作。
public static final int LEFT
游戏中执行向左动作。
public static final int RIGHT
游戏中执行向右动作。
public static final int FIRE
游戏中执行确认动作。
public static final int GAME_A
游戏中自定义第一个执行动作按键。
public static final int GAME_B
游戏中自定义第二个执行动作按键。
public static final int GAME_C
游戏中自定义第三个执行动作按键。
public static final int GAME_D
游戏中自定义第四个执行动作按键。

在应用时,需使用getGameAction(int keyCode)方法将按键码转换为游戏控制,而要游戏控制转换为按键码则使用getKeyCode(int gameAction)方法。游戏调用的应用方法如下:
public int getGameAction
(int keyCode)
根据手机游戏设置的按键取得game action码。
public int getKeyCode
(int gameAction)
根据手机游戏的game Action取得对应的按键代码。
示例6-2


判断游戏按键句柄
×/
import javax.microedition.midlet.×;
import javax.microedition.lcdui.×;
public class keyAction2 extends MIDlet implements CommandListener
{
Display display;
  //声明一个Form窗口
Form  form;
Command okCommand;
Command exitCommand;
  //声明一个游戏画板
canvasKey canvaskey;
public keyAction2( )
{
canvaskey=new canvasKey( );
display=Display.getDisplay(this);
//创建一个Form窗口
form=new Form("Form游戏按键控制");
okCommand = new Command("确认", Command.OK, 2);
exitCommand = new Command("离开", Command.EXIT, 2);
 //新建Form的item项说明
form.append("测试游戏按键控制");
 // Form中增加一个确认命令键
form.addCommand(okCommand);
// Form中增加一个离开命令键
form.addCommand(exitCommand);
//将命令加入Form清单中
form.setCommandListener(this);
}
   public void startApp()
{
display.setCurrent(form);
}
   public void pauseApp(){}
   public void destroyApp(boolean unconditional){}
   public void commandAction(Command cmd, Displayable disp)
{
 //判断命令控制状态
if (cmd == okCommand)
{
//点确定键后运行Canvas界面
display.setCurrent(canvaskey);
}
else if(cmd == exitCommand){
//运行离开命令
destroyApp(false);
notifyDestroyed();
}
}
class canvasKey extends Canvas
{
String  keyname="";
int     gameaction=0;
Image  handImage;
Image  keyImage;
String[] maxString={"UP", "SOFT1", "LEFT", "SELECT",
"RIGHT", "SOFT2", "DOWN",
"SEND", "CLEAR", "1", "2", "3", "4", "5",
"6", "7", "8", "9",
"ASTERISK","0","POUND"
};
int[]   maxisX={85, 40, 60, 85, 110, 130, 85, 30, 85, 35, 85, 135,
35, 85, 135, 35, 85, 135, 35, 85, 135
};
int[]   maxisY={48, 55, 55, 55, 55, 55, 65, 70, 85, 95, 105, 95,
115, 125, 115, 135, 145, 135, 155, 165, 155
};
public canvasKey()
{
try{
handImage=Image.createImage("/hand.png");
keyImage=Image.createImage("/key.png");
}catch(Exception ex){}
}

//运行按键状态
public void keyPressed(int keyCode)
{
//取得游戏按键名称
keyname=getKeyName(keyCode);
//取得游戏按键编码
gameaction=getGameAction(keyCode);
//重新绘制图面
repaint();
}
public void paint(Graphics g)
{
g.setColor(0xffffff);
g.fillRect(0,0,getWidth(),getHeight());
g.setColor(0);
g.drawString("游戏按键对照表", 40, 1, Graphics.LEFT | Graphics.TOP);
g.drawString("按键名称为:"+keyname, 50, 13, Graphics.LEFT |
Graphics.TOP);
g.drawString("游戏按键码:"+String.valueOf(gameaction), 50, 25,
Graphics.LEFT | Graphics.TOP);
g.drawImage(keyImage, 15, 40,Graphics.LEFT | Graphics.TOP);
for(int i=0; i<maxString.length;i++)
if(maxString[i].equals(keyname))
g.drawImage(handImage, maxisX[i], maxisY[i], Graphics.LEFT |
Graphics.TOP);
}
}
}
运行结果如图6-4所示。
图6-4
【说明】
从示例程序中显示的按键说明来看,方向键的按键编码与数字键的按键编码是相同的,只是名称不一样。在设计游戏按键时,可以使用数字键来代为控制方向,不过目前的手机大部分都包含方向按键和数字键。因此根据程序代码设计按键的原则,可以提供方向按键与数字键同时使用。
【责任编辑:雪花 TEL:(010)68476606】

回书目   上一节   下一节
专题
Java实用开发全集
J2ME手机开发技术基础
Java类的基础教程专题
Java发展动态专题
手机病毒揭密
我也说两句

匿名发表

(如果看不清请点击图片进行更换)


中 国 最 大 的 网 络 技 术 网 站 ·
技 术 成 就 梦 想
订阅技术快讯
电子杂志下载
名称:SQL Server数据库管理精品黄皮书
简介:书中文章经过精挑细选,便于用户能根据自己的实际工作和学习,快速在本书寻找到相关资料。内容涵盖了SQL Server的安装与升级、语句查询、数据备份和恢复、自动化任务、数据同步、数据字典、安全和预防、性能和优化、集群等各方面应用信息,以及DBA管理人员在数据库管理工作中
名称:2007路由技术大全
简介:《2007路由技术大全》由51CTO.com网站特别策划制作,该书包括路由器技术、路由器产品、路由器配置、安全设置、路由器故障处理、路由器密码恢复,以及广大网友在实践使用中的心得经验和技巧文章,内容注重实用性,适用于初学者入门,也适合多年从业者提高,是一本实践和理论完
名称:网络安全精品应用黄皮书
简介:《2007精品网络安全黄皮书》包括了9个大类24个小类, 800余篇文章,内容包含了熊猫烧香病毒、DDOS攻击、ARP病等热点问题的介绍及解决方案。从病毒查杀、防范、系统、数据等各方面的安全设置到黑客技术的了解、防范,涉及到了安全应用的全部领域, 由浅至深内容全面。
浏览器的战国时代
浏览器的战国时代
ARP攻击防范与解决方案
ARP攻击防范与解决方案
NAC安全访问控制
NAC安全访问控制
· NAC安全访问控制
· 网络布线测试仪器
· Windows Server 2008专..
· Windows远程桌面应用
· 网络故障排除宝典
· 运营商封堵ADSL共享 中..
· 解析35岁技术人的价值..
· 世纪枭雄比尔盖茨的王..
· 主流品牌防火墙配置
· ASP.NET开发教程
· 超级计算机TOP500专题
· Vista SP1对决XP SP3
· SQL Server 2008/2005..
· 程序员如何成长?
· C#技术开发指南
· 虚拟化技术还有点“虚”
ARP攻击防范与解决方案
ARP攻击防范与解决方案
SQL Server 2008/2005全解
SQL Server 2008/2005全解
SOA 面向服务架构
SOA 面向服务架构
· SOA 面向服务架构
· SQL Server 2008/2005..
· Apache技术专题
· 三层交换技术专题
· SQL Server入门到精通
· Windows远程桌面应用
· C#技术开发指南
· Apache技术专题
· Windows集群服务应用
· C#技术开发指南
· 国际文档格式标准开战
· 路由器设置与口令恢复
· Linux 集群技术专题
· PHP开发应用手册
· SOA 面向服务架构
· 企业数据恢复指南
ARP攻击防范与解决方案
ARP攻击防范与解决方案
SQL Server 2008/2005全解
SQL Server 2008/2005全解
SQL Server入门到精通
SQL Server入门到精通
· SQL Server入门到精通
· SQL Server 2008/2005..
· SOA 面向服务架构
· Apache技术专题
· C#技术开发指南
· 三层交换技术专题
· Apache技术专题
· C#技术开发指南
· Windows远程桌面应用
· 企业数据恢复指南
· Windows集群服务应用
· 路由器设置与口令恢复
· Linux 集群技术专题
· SOA 面向服务架构
· 了解统一威胁管理(UTM)..
· 反垃圾邮件技术应用