第12章_MIDP游戏编程.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第12章 MIDP游戏编程 主讲教师:贾震斌 本章目录 12.1 MIDP 2.0 Game API 概述 12.2 游戏容器GameCanvas类 12.3 游戏精灵Sprite 12.4 游戏地图TiledLayer类 12.5 图层管理LayerManager类 12.6 游戏实例:蜜蜂射击 本章学习目标 了解MIDP游戏编程基本概念、常用类及方法、基本程序框架 12.1 MIDP 2.0 Game API 概述 12.1.1 Game API类库简介 MIDP提供了GameCanvas类库实现游戏编程所需功能, GameCanvas是Canvas的扩展 为了便于操控图像,可以使图像中不同的内容位于不同的层面上,这就是图层的概念,如让人物和背景位于不同的图层上。对每一图层可以分别管理、操控。为此,MIDP提供了图层功能,图层由类Layer实现,而多个图层的管理又由LayerManger类负责。不同的图层叠加在一起形成了一个完整的图像。 由于受屏幕大小限制,图像可能无法完全显示出来,LayerManger类提供了观察窗口View Window,通过移动观察窗口实现图像不同部分的显示。 图层中有两个特殊图层:Sprite和TiledLayer, Sprite存放游戏角色, TiledLayer存放游戏背景 12.2 游戏容器GameCanvas类 12.2.1 屏幕缓冲 每一个GameCanvas对象创建时首先在内存中开辟屏幕大小的缓冲区,在缓冲区中绘制图形,需要时再将缓冲区内容复制到屏幕上 GameCanvas使用过程 创建GameCanvas对象,同时在内存中创建缓冲区 建立Graphics对象,调用GameCanvas的getGraphics()方法,获得Graphics对象,通过Graphics对象往内存中绘图,绘图过程与Canvas中不同的是绘图过程不一定要在paint()方法中 调用GameCanvas的flushGraphics()方法将图像送到屏幕上 12.2.2 获得键盘输入状态 利用继承于Canvas类的键盘按键事件 利用Game Canvas专用的getKeyStates()方法。可以取得多个同时按下的键值的组合 键值常量,参见教材p.208 12.3 游戏精灵Sprite 12.3.1 帧控制 Sprite是Layer类的子类,负责主要角色图层,这个图层由一个个图像组合起来,每一个图像称为一帧,每一帧图像按照一定时间间隔显示出来形成动画 创建帧的方法如下: Sprite(Image image, int framWeidth, int frameHeight) 帧的顺序也就是帧的索引值从0开始,Sprite提供了切换顺序的方法 void setFrame(int?sequenceIndex) ?void nextFrame() ?void prevFrame() 12.3.2 精灵翻转 图像可以以任何位置为中心旋转,Sprite提供了方法,如: void defineReferencePixel(int?x, int?y) void setRefPixelPosition(int?x, int?y) 12.3.3 碰撞检测 在GameCanvas中可以通过collidesWith()方法的不同参数的重载形式检测Sprite与Image、Sprite与Sprite、 Sprite与TiledLayer之间是否相遇(即碰撞检测),方法如下: boolean collidesWith(Image?image, int?x, int?y, boolean?pixelLevel) ??????????Checks for a collision between this Sprite and the specified Image with its upper left corner at the specified location. ?boolean collidesWith(Sprite?s, boolean?pixelLevel) ??????????Checks for a collision between this Sprite and the specified Sprite. ?boolean collidesWith(TiledLayer?t, boolean?pixelLevel) ??????????Checks for a collision between this Sprite and the specified TiledLayer. 其中参数pixelLevel表示检测模式,在MIDP 2.0 中定义了两种模式:像素模式

文档评论(0)

***** + 关注
实名认证
文档贡献者

本账号下所有文档分享可拿50%收益 欢迎分享

1亿VIP精品文档

相关文档