- 1、本文档共22页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
异常处理和多线程手机画布开发
武汉卡信维—3G 武汉卡信维—3G 异常处理和多线程 手机画布开发主讲:刘杰 * * 武汉卡信维—3G 中国移动 画布应用Canvas 一般情况下,大多数游戏都属于画布应用程序,在游戏中程序需要自己绘制屏幕图像处理用户的输入。 * * 武汉卡信维—3G 画布的大多数操作都封装在Canvas类中,该类属于javax.microedition.lcdui包, Canvas类继承Display类。 Canvas 类只提供一个受保护的构造函数.必须派生出一个类,然后创建派生类的对象. 画布的概述和基本架构 * * 武汉卡信维—3G 注: 1、当画布的实现比较简单,可以定义MIDlet为内部类,当实现比较复杂时,可以把派生类转移到一个独立的文件中,但需要和MIDlet在同一个包中; 2、在Canvas类中包含一个虚函数paint,用于绘制画布屏幕,。在Canvas派生类中必须覆盖paint函数 3、当使用setCurrent函数方法把派生类设置为当前项显示,这样就会执行paint函数中实现的绘图代码。 4、如果需要全屏显示,则可以使用函数setFullScreenMode(Boolean model) 画布的概述和基本架构 * * 武汉卡信维—3G 在画布应用程序中,必须自己处理用户的输入, 因此画布程序 被称称为低级的用户界面。 处理按键事件包括处理标准键盘输入、处理游戏 动作特殊按键的处理 Canvas的处理按键事件 * * 武汉卡信维—3G Canvas提供了3个关于键盘输入事件处理的函数 protected void keyPressed(int keyCode) protected void keyRepeated(int keyCode) protected void keyReleased(int keyCode) 1、当按下某个键时会触发keyPressed函数 2、当用户一直按着某个键时会触发keyRepeated函数; 3、当用户示范某个键时触发keyReleased函数 处理标准键盘输入 * * 武汉卡信维—3G 在游戏程序中往往需要处理一些游戏控制按键,如上、下、左、右、射击键。 处理游戏动作 * * 武汉卡信维—3G 处理游戏动作 游戏动作键常量不能直接和键值进行比较,在Canvas类中提供了getGameAction函数,用于把用户键盘键值转换为游戏动作, 语法:public int getGameAction(int keyCode) 参数keyCode为键值 在Canvas类中还提供了把游戏动作转换为键值的函数getKeyCode, 语法:public int getKeyCode(int gameAction) 参数gameAction为游戏动作,返回值为游戏动作对应的键值 注:getKeyCode函数和getGameAction函数对应,但是这两个函数并不是完全可逆的,主要原因是有可能多个按键对应一个游戏动作 * * 武汉卡信维—3G 特殊按键的处理 有些特殊按键的键值在MIDP2.0中没有定义,如果要在程序中处理这些按键,就必须知道这些键的键值。在不同的机型中,要定义不同的特殊按键常量。可以建立不同的配制文件,针对不同的目标机型进行编译。 * * 武汉卡信维—3G 特殊按键的处理 在创建了画布对象后,调用hasRepeatEvents函数判断手机是否支持keyRepeated事件处理。并不是所有的手机都支持长按某个键keyRepeated事件。hasRepeatEvents函数的语法定义为: public boolean hasRepeatEvents() 如果手机支持长键处理,则函数的返回值为true,否则为false.在按键处理函数中调用了getKeyName函数返回按键的名字,函数的语法定义如下: Pbulic static getKeyName(int keyCode) 其中keyCode是按键的键值,函数的返回值是该按键的字符串格式名字,例如#键的名字为POUND(#符号的英文)。 * * 武汉卡信维—3G 处理指针事件 在画布中提供了对于一些智能手机指针的输入处理方法。如:摩托罗拉的A780、E680i、A120手机。 可以通过调用hasPointerMotionEvents函数判断手机是否支持指针。语法定义: public boolean hasPointerEvents() public boolean hasPointerMotionEvents() 返回值为true则支持指针动作,否则不支持。 指针动作有指针按下、指针释放、指针拖动。 * * 武汉卡信维—3G canvas上绘制文本 文本绘制函数 在paint函数中,参数g是一个Grap
文档评论(0)