J2ME手机应用开发技术-5经典.ppt

  1. 1、本文档共31页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
乐成数字通信学院 乐成数字移动通信 MIDP2.0游戏开发包 * 上章回顾 介绍了手机中的RMS系统的使用方法和功能 记录仓储 记录 记录的数据格式 记录仓储的打开,关闭,删除 记录的添加,修改和删除 介绍了手机中音乐的播放方法 Player状态 音量控制 播放次数 * 本章要点 掌握MIDP2.0下的游戏开发包的结构 掌握游戏中的图层技术 掌握游戏开发包中各类的实际用途及使用方法 * 4.1 游戏开发包简介 MIDP 2.0相对于1.0来说,最大的变化就是新添加了用于支持游戏的API 它们被放在javax.microedition.lcdui.game 使用游戏开发包进行游戏开发的基本思想是: 游戏的界面由图层组成 背景可以在一个图层上,而游戏精灵可以在另一个图层上,每个图层都可以得到有效的控制。 * 4.2 GameCanvas类的使用 提供了专门针对游戏的功能 每个GameCanvas实例都会有一个为之创建的专用的缓冲区 可以直接得到设备键盘的物理状态 public class MyGameCanvas extends GameCanvas { public MyGameCanvas() { //调用父类的构造函数 Super(true); } } //代码演示 是否抑制键盘事件 * 4.2.1 绘图 要创建一个新的GameCanvas实例,只能通过继承并调用父类的构造函数: protected GameCanvas(boolean suppressKeyEvents) 与在Canvas上绘图不同,它并不需要通过paint()放法来实现屏幕的显示 为了在GameCanvas上绘图,首先要获得Graphics对象,以便获得对屏幕的控制权: protected Graphics getGraphics() 调用flushGraphics() 进行显示 * 4.2.1 绘图 Graphics对象有以下属性 绘制目标是这个GameCanvas的缓冲区; 坐标系统的原点定位在缓冲区的左上角。 在完成了绘图操作后,使用flushGraphics()方法将后备屏幕缓冲区的内容输出到显示屏上 输出区域的大小与GameCanvas的大小相同。 演示 * 4.2.2 键盘控制 通过调用getKeyStates()方法来查询按键的状态 获取游戏的物理键状态。 如果一个键对应的比特位的值为1,表示该键当前被按下 这种模式保证一个快速的按键和释放总是能够在游戏循环中被捕获 因为这种直接获取按键状态的方法不会主动返回当前按键的状态,最好的方法就是使用无限循环 * 4.2.2 键盘控制 常用按键 * 4.2.2 键盘控制 演示 public void keyEvent() { int keyCode; while(true) { keyCode=this.getKeyStates(); //判断按键 if((keyCodethis.UP_PRESSED)!=0) //按了上方向 {} else if((keyCodethis.DOWN_PRESSED)!=0) //按了下方向 {} } } 总结 GameCanvas 是将画图,按键,业务逻辑全放在run中, Canvas也可以将画图,按键,业务逻辑全放在run中 游戏的三种框架 * * 4.3 Sprite类的使用 顾名思义就是精灵类 主要为了用来实现游戏里面的人物动画、移动和碰撞检测而设计的 使用Sprite可以读取一个存储完整动画的大图片,然后把这个大图片按照动画的每一帧分割为一个个小图片 * 4.3.1 帧序列 用于绘制Sprite的原始帧由一个单独的Image对象提供,此Image可以是可变的,也可以是不可变的 如果使用多帧,图像将按照指定的宽度和高度被切割成一系列相同大小的帧 * 4.3.1 帧序列 要创建一个静态的Sprite,可以使用它的构造函数: public Sprite(Image image) 如果要创建动态的Sprite,就必须使用 public Sprite(Image image,int frameWidth,int frameHeight)。 注意:源图像的宽度必须是帧宽度的整数倍,高度必须是帧高度的整数倍。否则,将会抛出IllegalArgumentException异常。 代码演示 * 4.3.1 帧序列 缺省的帧序列就是所有可用帧的顺序排列 可以使用setFrameSequence(int[] sequence)来设置帧序列 必须在帧序列中手动切换当前帧。可以调用

文档评论(0)

liuxiaoyu99 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档