书签 分享 收藏 举报 版权申诉 / 138
上传文档赚钱

类型手机游戏开发课件.pptx

  • 上传人(卖家):三亚风情
  • 文档编号:2225657
  • 上传时间:2022-03-23
  • 格式:PPTX
  • 页数:138
  • 大小:1.81MB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《手机游戏开发课件.pptx》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    手机 游戏 开发 课件
    资源描述:

    1、2019年5月8日感谢你的观看兰州石化学院 Page 12019年5月8日感谢你的观看兰州石化学院 Page 2 游戏是策划、美工和程序三者的协调游戏是策划、美工和程序三者的协调及创意和商业运作的平衡。集美术、音乐、及创意和商业运作的平衡。集美术、音乐、动画、人工智能等元素于一身。动画、人工智能等元素于一身。2019年5月8日感谢你的观看兰州石化学院 Page 3 目前支持目前支持Java的手机性能越来越强大,的手机性能越来越强大,同时,手机的价格在不断地下降,因此,同时,手机的价格在不断地下降,因此,手机游戏的市场前景将是非常良好的。本手机游戏的市场前景将是非常良好的。本章将从图片的处理、动

    2、画的制作和音效的章将从图片的处理、动画的制作和音效的实现来学习手机游戏开发的基础知识。实现来学习手机游戏开发的基础知识。 2019年5月8日感谢你的观看兰州石化学院 Page 4 手机游戏开发简介手机游戏开发简介7.1 PNG PNG图像格式介绍图像格式介绍7.2游戏设计中的动画游戏设计中的动画7.3手机游戏手机游戏2D2D动画开发动画开发7.42019年5月8日感谢你的观看兰州石化学院 Page 5 手机音效开发手机音效开发7.5综合示例:飞机碰撞综合示例:飞机碰撞7.6小结小结7.72019年5月8日感谢你的观看兰州石化学院 Page 6 现在的移动电话可以看作小型的计算现在的移动电话可以

    3、看作小型的计算机,只是它的处理能力与机,只是它的处理能力与PC相比很有限,相比很有限,但是足够运行一个小型的游戏。但是足够运行一个小型的游戏。2019年5月8日感谢你的观看兰州石化学院 Page 7 另一个特性就是它们还是网络计算机,另一个特性就是它们还是网络计算机,能够高速发送和接收数字数据。能够高速发送和接收数字数据。 除了语音除了语音数据以外,它们还可以发送和接收其他类数据以外,它们还可以发送和接收其他类型的数据。型的数据。2019年5月8日感谢你的观看兰州石化学院 Page 8 所以类似所以类似传奇传奇、千年千年这样的这样的网络游戏将来也可以在手机上实现。网络游戏将来也可以在手机上实现

    4、。2019年5月8日感谢你的观看兰州石化学院 Page 9 但是与但是与PC相比,它们的输入和显示功相比,它们的输入和显示功能也很有限。手机的屏幕都较小,其对声能也很有限。手机的屏幕都较小,其对声音处理能力也很有限。音处理能力也很有限。2019年5月8日感谢你的观看兰州石化学院 Page 10 开发者在这样的平台上开发应用,必开发者在这样的平台上开发应用,必须认真的考虑这些特点。本节将重点讨论须认真的考虑这些特点。本节将重点讨论手机本身的特点和手机游戏开发的特点。手机本身的特点和手机游戏开发的特点。2019年5月8日感谢你的观看兰州石化学院 Page 11 7.1.1 7.1.1 手机游戏的类

    5、型手机游戏的类型 1 1嵌入式游戏嵌入式游戏 2 2短信息服务游戏短信息服务游戏 3 3WAPWAP浏览器游戏浏览器游戏2019年5月8日感谢你的观看兰州石化学院 Page 12图图7-1 WAP7-1 WAP游戏的工作原理图游戏的工作原理图2019年5月8日感谢你的观看兰州石化学院 Page 13 7.1.2 7.1.2 手机游戏开发特点手机游戏开发特点 1 1庞大的潜在用户群庞大的潜在用户群 2 2便携性便携性 3 3屏幕小屏幕小2019年5月8日感谢你的观看兰州石化学院 Page 14 4 4有限的颜色和声音支持有限的颜色和声音支持 5 5应用程序大小限制应用程序大小限制 6 6高等待时

    6、间高等待时间 7 7可中断性是关键可中断性是关键2019年5月8日感谢你的观看兰州石化学院 Page 15 7.1.3 7.1.3 扬长避短的手机游戏扬长避短的手机游戏开发开发 1 1缩短每回合的游戏时间缩短每回合的游戏时间 2 2合理处理等待时间合理处理等待时间2019年5月8日感谢你的观看兰州石化学院 Page 16 7.2.1 PNG 7.2.1 PNG的由来的由来 PNG全名全名Portable Network Graphics,字面意思是字面意思是“可移植性网络用图形可移植性网络用图形”,从,从这简单几个字已经明白定义了这简单几个字已经明白定义了PNG的用途的用途以及主要发展方向。以

    7、及主要发展方向。2019年5月8日感谢你的观看兰州石化学院 Page 17 1996年,年,PNG Group向向W3C(World Wide Web Consortium)提出一种多媒体)提出一种多媒体图形格式,重点在于改进现有图形格式,重点在于改进现有JPG跟跟GIF的缺点,并且提供更多新的概念与压缩模的缺点,并且提供更多新的概念与压缩模式,在提出后得到式,在提出后得到W3C的认可与推荐。的认可与推荐。2019年5月8日感谢你的观看兰州石化学院 Page 18 在在1996年年10月月1号,号,W3C正式发函公正式发函公告,推荐告,推荐PNG为最佳的图形格式,并且以为最佳的图形格式,并且以

    8、“PNG Delivers Higher Quality Graphics for Web Page Design”的文字作为该文件的的文字作为该文件的标头。标头。2019年5月8日感谢你的观看兰州石化学院 Page 19 7.2.2 PNG 7.2.2 PNG的图档格式特性的图档格式特性 PNG保留了大部分保留了大部分GIF的特性,的特性, PNG的压缩率很高,尤其是图表型的图片的压缩率很高,尤其是图表型的图片 2019年5月8日感谢你的观看兰州石化学院 Page 20 7.2.3 PNG 7.2.3 PNG格式图像的压缩格式图像的压缩及处理及处理 PNG图像格式文件(或者称为数据流)图像格

    9、式文件(或者称为数据流)由一个由一个8字节的字节的PNG文件署名(文件署名(PNG file signature)域和按照特定结构组织的)域和按照特定结构组织的3个以个以上的数据块(上的数据块(chunk)组成。)组成。2019年5月8日感谢你的观看兰州石化学院 Page 21 PNG定义了两种类型的数据块,一种定义了两种类型的数据块,一种是称为关键数据块(是称为关键数据块(critical chunk),这),这是标准的数据块,另一种叫做辅助数据块是标准的数据块,另一种叫做辅助数据块(ancillary chunks),这是可选的数据块。),这是可选的数据块。 2019年5月8日感谢你的观看

    10、兰州石化学院 Page 22 7.2.4 7.2.4 使用使用PNGPNG图片图片 在在MIDP具体实现中,具体实现中,Images可以是可以是可变的也可以是不可变的。可变的也可以是不可变的。2019年5月8日感谢你的观看兰州石化学院 Page 23 不可变的不可变的Image可以从二进制图像文可以从二进制图像文件创建,如果要用二进制图像数据来创建件创建,如果要用二进制图像数据来创建Image,这些数据必须是设备支持的格式。,这些数据必须是设备支持的格式。2019年5月8日感谢你的观看兰州石化学院 Page 24 有的设备可能会支持额外的一些格式,有的设备可能会支持额外的一些格式,不过所有设备

    11、都必须支持不过所有设备都必须支持PNG格式。在手格式。在手机中使用机中使用PNG图片,必须先把图片加载到图片,必须先把图片加载到内存,并且实例化成为一个内存,并且实例化成为一个Image对象。对象。2019年5月8日感谢你的观看兰州石化学院 Page 25 Image对象的构造方法如下:对象的构造方法如下:public static Image createImage(String name) 2019年5月8日感谢你的观看兰州石化学院 Page 26图图7-2 7-2 旋转的旋转的“X”X”2019年5月8日感谢你的观看兰州石化学院 Page 27 7.2.5 7.2.5 游戏菜单制作游戏菜

    12、单制作 当玩家在菜单项中选择了某选项后,当玩家在菜单项中选择了某选项后,系统给玩家返回的界面应该不同。系统给玩家返回的界面应该不同。2019年5月8日感谢你的观看兰州石化学院 Page 28 下例菜单选项包括:新游戏、高分榜、下例菜单选项包括:新游戏、高分榜、帮助和退出。其他屏幕包括:游戏中的界帮助和退出。其他屏幕包括:游戏中的界面、查看高分榜的界面、查看帮助的界面。面、查看高分榜的界面、查看帮助的界面。 2019年5月8日感谢你的观看兰州石化学院 Page 29图图7-3 7-3 游戏的菜单界面游戏的菜单界面2019年5月8日感谢你的观看兰州石化学院 Page 30 7.3.1 7.3.1

    13、动画基础动画基础 1 1什么是动画什么是动画 动画是通过连续播放一系列画面,给动画是通过连续播放一系列画面,给人的视觉造成连续变化的图画。人的视觉造成连续变化的图画。 2019年5月8日感谢你的观看兰州石化学院 Page 31 2 2动画制作应注意的问题动画制作应注意的问题 (1)速度的处理)速度的处理(2)循环动画)循环动画(3)夸张与拟人)夸张与拟人2019年5月8日感谢你的观看兰州石化学院 Page 32 7.3.2 7.3.2 双缓冲技术双缓冲技术 双缓冲技术是编写双缓冲技术是编写J2ME游戏程序的游戏程序的关键技术之一。实际上,双缓冲技术是计关键技术之一。实际上,双缓冲技术是计算机动

    14、画的一项传统技术。算机动画的一项传统技术。2019年5月8日感谢你的观看兰州石化学院 Page 33 造成屏幕闪烁的主要原因在于,画面造成屏幕闪烁的主要原因在于,画面在显示的同时,程序又在改变它。解决办在显示的同时,程序又在改变它。解决办法就是在内存中开辟一片区域作为后台画法就是在内存中开辟一片区域作为后台画面,程序对它更新、修改,完成后再显示面,程序对它更新、修改,完成后再显示它。它。2019年5月8日感谢你的观看兰州石化学院 Page 34 这样被显示的图像永远是已经完全画这样被显示的图像永远是已经完全画好的图像,程序修改的将不是正在被显示好的图像,程序修改的将不是正在被显示的图像。当然还

    15、有其他方法可以解决屏幕的图像。当然还有其他方法可以解决屏幕闪烁问题,但使用双缓冲技术是一种值得闪烁问题,但使用双缓冲技术是一种值得推荐的解决方案。推荐的解决方案。2019年5月8日感谢你的观看兰州石化学院 Page 35 双缓冲思想体现在程序上就是要依次双缓冲思想体现在程序上就是要依次完成以下几步工作。完成以下几步工作。2019年5月8日感谢你的观看兰州石化学院 Page 36(1)定义一个)定义一个Graphics对象对象bg和一和一个个Image对象对象buf,按屏幕大小建立一,按屏幕大小建立一个缓冲对象附给个缓冲对象附给buf,然后取得,然后取得buf的的Graphics对象附给对象附给

    16、bg。 2019年5月8日感谢你的观看兰州石化学院 Page 37(2)在)在bg(缓冲屏幕)上用(缓冲屏幕)上用drawImage()和和drawString等语句画等语句画图,相当于在缓冲屏幕上画图。图,相当于在缓冲屏幕上画图。2019年5月8日感谢你的观看兰州石化学院 Page 38(3)调用)调用repaint()语句,它的功能语句,它的功能是告知系统调用是告知系统调用paint()来完成真实屏来完成真实屏幕的显示。幕的显示。 2019年5月8日感谢你的观看兰州石化学院 Page 39(4)在)在paint(Graphics g)方法里,将方法里,将buf(缓冲屏幕上的图片)画到真实(

    17、缓冲屏幕上的图片)画到真实屏幕上。屏幕上。2019年5月8日感谢你的观看兰州石化学院 Page 40 7.3.3 7.3.3 图片的裁剪图片的裁剪 我们可以通过设定裁剪的区域来显示我们可以通过设定裁剪的区域来显示图片的一个片断,使用前面讲的方法:图片的一个片断,使用前面讲的方法: setClip() getClipX() getClipY() getClipWidth() getClipHeight()2019年5月8日感谢你的观看兰州石化学院 Page 41 创建裁剪区域的步骤如下。创建裁剪区域的步骤如下。(1)声明类的引用。)声明类的引用。(2)创建类的实例,并赋值给这些)创建类的实例,并

    18、赋值给这些类引用。类引用。(3)当程序开始时,显示)当程序开始时,显示Canvas类类的实例。的实例。2019年5月8日感谢你的观看兰州石化学院 Page 42(4)当)当Exit时,终止时,终止MIDlet。(5)定义)定义Canvas的派生类,并实现的派生类,并实现CommandListener。2019年5月8日感谢你的观看兰州石化学院 Page 43(6)请求保存图片所需的足够内存)请求保存图片所需的足够内存块。如果使用动态图像,就创建图像。块。如果使用动态图像,就创建图像。否则确定图像包含什么静态图片文件否则确定图像包含什么静态图片文件名。名。2019年5月8日感谢你的观看兰州石化学

    19、院 Page 44(7)从)从Paint()方法中判断图像是否方法中判断图像是否创建成功或者图像是否打开成功。如创建成功或者图像是否打开成功。如果是创建一个新的裁剪区域,在画布果是创建一个新的裁剪区域,在画布上绘制图像。上绘制图像。2019年5月8日感谢你的观看兰州石化学院 Page 45 7.3.4 7.3.4 播放动画框架播放动画框架 开发开发MIDP的程序员经常会在一个的程序员经常会在一个MIDlet上显示动画。上显示动画。MIDP 1.0没有直接提没有直接提供对动画的支持(正在开发中的供对动画的支持(正在开发中的MIDP 2.0支持),但真要是自己去实现,其实也并支持),但真要是自己去

    20、实现,其实也并非是一件很难的事。非是一件很难的事。2019年5月8日感谢你的观看兰州石化学院 Page 46 任何动画的最基本的前提,是要在足任何动画的最基本的前提,是要在足够快的时间内显示和更换一张张的图片,够快的时间内显示和更换一张张的图片,让人的眼睛看到动的画面效果。图片必须让人的眼睛看到动的画面效果。图片必须按照顺序画出来。按照顺序画出来。2019年5月8日感谢你的观看兰州石化学院 Page 47 从一张图片到下一张图片之间的变化从一张图片到下一张图片之间的变化越小,效果会越好。首先要做的,是使用越小,效果会越好。首先要做的,是使用你的图片处理软件(比如你的图片处理软件(比如Photo

    21、shop或者或者Firework)创建一系列相同大小的图片来)创建一系列相同大小的图片来组成动画。组成动画。2019年5月8日感谢你的观看兰州石化学院 Page 48 每张图片代表动画一帧。你需要制作每张图片代表动画一帧。你需要制作一定数量的帧一定数量的帧越多的帧会让你的动画越多的帧会让你的动画看上去越平滑。制作好的图片一定要保存看上去越平滑。制作好的图片一定要保存成成PNG格式。格式。2019年5月8日感谢你的观看兰州石化学院 Page 49 有两个办法让你刚做好的图片在有两个办法让你刚做好的图片在MIDlet上变成动画。第一,把图片都放到上变成动画。第一,把图片都放到一个一个Web服务器上

    22、,让服务器上,让MIDlet下载他们,下载他们,MIDP内置的内置的HTTP支持。支持。2019年5月8日感谢你的观看兰州石化学院 Page 50 第二个办法更简单,把图片用第二个办法更简单,把图片用MIDlet打包成打包成JAR文件。如果你使用的是文件。如果你使用的是J2ME开开发工具,把发工具,把PNG文件放到你的项目文件里文件放到你的项目文件里面就可以了。面就可以了。2019年5月8日感谢你的观看兰州石化学院 Page 51 动画的过程其实更像账本记录:显示动画的过程其实更像账本记录:显示当前帧,然后适当地更换到下一帧。当前帧,然后适当地更换到下一帧。 2019年5月8日感谢你的观看兰州

    23、石化学院 Page 52 7.4.1 MIDP 2.0 2D 7.4.1 MIDP 2.0 2D游戏开发游戏开发 MIDP 2.0相对于相对于1.0来说,最大的变化来说,最大的变化就是新添加了用于支持游戏的就是新添加了用于支持游戏的API,它们,它们被放在被放在javax.microedition.lcdui.game 包中。包中。2019年5月8日感谢你的观看兰州石化学院 Page 53 游戏游戏API包提供了一系列针对无线设包提供了一系列针对无线设备的游戏开发类。备的游戏开发类。2019年5月8日感谢你的观看兰州石化学院 Page 54 由于无线设备仅有有限的计算能力,由于无线设备仅有有限

    24、的计算能力,因此许多因此许多API的目的在于提高的目的在于提高Java游戏的游戏的性能,并且把原来很多需要手动编写的代性能,并且把原来很多需要手动编写的代码如屏幕双缓冲、图像剪裁等都交给码如屏幕双缓冲、图像剪裁等都交给API间接调用本地代码来实现。间接调用本地代码来实现。2019年5月8日感谢你的观看兰州石化学院 Page 55 各厂家有相当大的自由来优化它们。各厂家有相当大的自由来优化它们。游戏游戏API使用了使用了MIDP的低级图形类接口的低级图形类接口(Graphics,Image等)。整个游戏包仅有等)。整个游戏包仅有5个个Class。2019年5月8日感谢你的观看兰州石化学院 Pag

    25、e 56 1 1GameCanvasGameCanvas 2 2LayerLayer 3 3LayerManagerLayerManager 4 4SpriteSprite 5 5TiledLayerTiledLayer2019年5月8日感谢你的观看兰州石化学院 Page 57 7.4.2 GameCanvas 7.4.2 GameCanvas的使用的使用 GameCanvas类提供了基本的游戏用类提供了基本的游戏用户接口。户接口。2019年5月8日感谢你的观看兰州石化学院 Page 58 除了从除了从Canvas 继承下来的特性(命令,继承下来的特性(命令,输入事件等)以外,它还提供了专门针

    26、对输入事件等)以外,它还提供了专门针对游戏的功能,如后备屏幕缓冲和键盘状态游戏的功能,如后备屏幕缓冲和键盘状态查询的能力。每个查询的能力。每个GameCanvas 实例都会实例都会有一个唯一的缓冲区。有一个唯一的缓冲区。 2019年5月8日感谢你的观看兰州石化学院 Page 59 1 1绘图绘图 2 2键盘键盘2019年5月8日感谢你的观看兰州石化学院 Page 60 7.4.3 Sprite 7.4.3 Sprite的使用的使用 Sprite 是一个基本的可视元素,可以是一个基本的可视元素,可以用存储在图像中的一帧或多帧来渲染它;用存储在图像中的一帧或多帧来渲染它;轮流显示不同的帧可以令轮流

    27、显示不同的帧可以令Sprite 实现动画。实现动画。2019年5月8日感谢你的观看兰州石化学院 Page 61 翻转、旋转等几种变换方式也能应用翻转、旋转等几种变换方式也能应用于于Sprite 使其外观改变。作为使其外观改变。作为Layer 子类,子类,Sprite 的位置可以改变,并且还能设置其的位置可以改变,并且还能设置其可视与否。可视与否。2019年5月8日感谢你的观看兰州石化学院 Page 62 1 1Sprite Sprite 帧帧 用于渲染用于渲染Sprite的原始帧由一个单独的原始帧由一个单独的的Image对象提供,此对象提供,此Image可以是可变的,可以是可变的,也可以是不可

    28、变的。也可以是不可变的。 2019年5月8日感谢你的观看兰州石化学院 Page 63图图7-4 7-4 帧的分解帧的分解2019年5月8日感谢你的观看兰州石化学院 Page 64 2 2帧序列帧序列 Sprite 的帧序列定义了帧以什么样的的帧序列定义了帧以什么样的顺序来显示。顺序来显示。 2019年5月8日感谢你的观看兰州石化学院 Page 65图图7-5 7-5 帧的序列帧的序列 2019年5月8日感谢你的观看兰州石化学院 Page 66 Special Frame Sequence 图图7-6 7-6 帧的特定序列帧的特定序列 2019年5月8日感谢你的观看兰州石化学院 Page 67

    29、图图7-7 7-7 更新显示更新显示2019年5月8日感谢你的观看兰州石化学院 Page 68 3 3Reference PixelReference Pixel 作为作为Layer 的一个子类,的一个子类,Sprite 继承继承了很多方法来设置和获取位置,如了很多方法来设置和获取位置,如setPosition(x,y),getX()和和getY()。 2019年5月8日感谢你的观看兰州石化学院 Page 69 4 4Sprite Sprite 的变换的变换 几种变换可应用于几种变换可应用于Sprite。可用的变。可用的变换包括旋转几个换包括旋转几个90 度加上镜像(沿垂直度加上镜像(沿垂直轴

    30、)。轴)。 2019年5月8日感谢你的观看兰州石化学院 Page 70图图7-8 Reference Pixel7-8 Reference Pixel2019年5月8日感谢你的观看兰州石化学院 Page 71图图7-9 7-9 参考像素点被定位在树枝末端参考像素点被定位在树枝末端2019年5月8日感谢你的观看兰州石化学院 Page 72图图7-10 Sprite7-10 Sprite的变换的变换 2019年5月8日感谢你的观看兰州石化学院 Page 73图图7-11 907-11 90度旋转的变换度旋转的变换2019年5月8日感谢你的观看兰州石化学院 Page 74 7.4.4 7.4.4 碰

    31、撞检测碰撞检测 Sprite 非常适合移动的物体,如游戏非常适合移动的物体,如游戏主角、敌人等,在游戏中,可以使用主角、敌人等,在游戏中,可以使用Sprite 提供的碰撞检测功能来简化游戏逻提供的碰撞检测功能来简化游戏逻辑。辑。2019年5月8日感谢你的观看兰州石化学院 Page 75 Sprite的碰撞检测可以分两种:一种的碰撞检测可以分两种:一种是矩形碰撞检测,另一种是像素碰撞检测。是矩形碰撞检测,另一种是像素碰撞检测。游戏中游戏中Sprite的大小往往是用包围它的矩的大小往往是用包围它的矩形的大小来表示的,如在图形的大小来表示的,如在图7-12中的飞机中的飞机和导弹并没有发生碰撞但检查的

    32、结果却发和导弹并没有发生碰撞但检查的结果却发生了碰撞。生了碰撞。2019年5月8日感谢你的观看兰州石化学院 Page 76图图7-12 7-12 矩形碰撞检测矩形碰撞检测 2019年5月8日感谢你的观看兰州石化学院 Page 77 对于像素碰撞检测,往往把对于像素碰撞检测,往往把Sprite的的背景色设置为相同的颜色,碰撞检查的时背景色设置为相同的颜色,碰撞检查的时候就只判断两个图片除背景色以外的其他候就只判断两个图片除背景色以外的其他像素是否发生了重叠。像素是否发生了重叠。2019年5月8日感谢你的观看兰州石化学院 Page 78 像素碰撞检测比较精确,但计算复杂,像素碰撞检测比较精确,但计

    33、算复杂,一般没有特殊要求都使用矩形碰撞检测。一般没有特殊要求都使用矩形碰撞检测。下面的例子两个矩形发生了碰撞但飞机和下面的例子两个矩形发生了碰撞但飞机和导弹并没有发生碰撞,如图导弹并没有发生碰撞,如图7-13所示。所示。2019年5月8日感谢你的观看兰州石化学院 Page 79 图图7-13 7-13 像素碰撞检测像素碰撞检测2019年5月8日感谢你的观看兰州石化学院 Page 80 要判断两个要判断两个Sprite 是否碰撞,或者与是否碰撞,或者与其他其他Layer 是否碰撞,可以使用是否碰撞,可以使用collidesWith()方法。方法。CollidesWith()共有三共有三种形式:种

    34、形式:2019年5月8日感谢你的观看兰州石化学院 Page 81(1)public final boolean collidesWith(Sprite s,Boolean pixelLevel)2019年5月8日感谢你的观看兰州石化学院 Page 82(2)public final boolean collidesWith(TitledLayer t,Boolean pixelLevel)2019年5月8日感谢你的观看兰州石化学院 Page 83(3)public final boolean collidesWith(Image image,int x,int y,Boolean pixelL

    35、evel)2019年5月8日感谢你的观看兰州石化学院 Page 84 7.4.5 Layer 7.4.5 Layer的使用的使用 Layer 是一个抽象类,表示游戏中的是一个抽象类,表示游戏中的一个可视元素。一个可视元素。 2019年5月8日感谢你的观看兰州石化学院 Page 85 1 1TiledLayerTiledLayer TiledLayer 由一系列单元格组成,单由一系列单元格组成,单元格可被一组贴图填充。元格可被一组贴图填充。 2019年5月8日感谢你的观看兰州石化学院 Page 86图图7-14 TiledLayer7-14 TiledLayer2019年5月8日感谢你的观看兰州

    36、石化学院 Page 87 每个贴图都被赋予一个唯一的索引号。每个贴图都被赋予一个唯一的索引号。 除了静态贴图外,开发者同样能够定义一除了静态贴图外,开发者同样能够定义一系列动态贴图(系列动态贴图(animated tiles)。)。 2019年5月8日感谢你的观看兰州石化学院 Page 88 动态贴图允许开发者能非常容易地改动态贴图允许开发者能非常容易地改变一组单元格的外观。变一组单元格的外观。 2019年5月8日感谢你的观看兰州石化学院 Page 89图图7-15 TiledLayer7-15 TiledLayer背景背景2019年5月8日感谢你的观看兰州石化学院 Page 90图图7-16

    37、 TiledLayer7-16 TiledLayer动态贴图动态贴图2019年5月8日感谢你的观看兰州石化学院 Page 91 2 2LayerManagerLayerManager LayerManager管理一系列的管理一系列的Layer。 2019年5月8日感谢你的观看兰州石化学院 Page 92 可视窗口(可视窗口(view window)控制着可视)控制着可视区域及其在区域及其在LayerManager 的坐标系统中的坐标系统中的位置。的位置。 2019年5月8日感谢你的观看兰州石化学院 Page 93 图图7-17 7-17 相对原点相对原点2019年5月8日感谢你的观看兰州石化学

    38、院 Page 94 paint(Graphics, int, int)方法包含一个方法包含一个(x,y)坐标,控制可视窗口在屏幕中的显示坐标,控制可视窗口在屏幕中的显示位置。位置。 2019年5月8日感谢你的观看兰州石化学院 Page 95图图7-18 7-18 控制可视窗口显示位置控制可视窗口显示位置2019年5月8日感谢你的观看兰州石化学院 Page 96 为了添加一个为了添加一个Layer,使用,使用append()方方法向这个法向这个LayerManager 添加一个添加一个Layer。 2019年5月8日感谢你的观看兰州石化学院 Page 97 现在能播放音乐的手机已经是很常见现在能

    39、播放音乐的手机已经是很常见的了,同时手机游戏也需要声音来增加动的了,同时手机游戏也需要声音来增加动感效果,所以手机音效也成为了开发热点。感效果,所以手机音效也成为了开发热点。2019年5月8日感谢你的观看兰州石化学院 Page 98 J2ME针对多种媒体格式,提供了一针对多种媒体格式,提供了一套播放接口,那就是:套播放接口,那就是:MMAPI(Mobile Media API)。)。2019年5月8日感谢你的观看兰州石化学院 Page 99 7.5.1 MMAPI 7.5.1 MMAPI体系结构体系结构 现在多媒体的格式很多,要顺利地播现在多媒体的格式很多,要顺利地播放这些不同格式的音乐,一种

    40、比较好的方放这些不同格式的音乐,一种比较好的方式就是把这些不同格式的数据都转换为统式就是把这些不同格式的数据都转换为统一的格式,然后统一使用一个播放器接口一的格式,然后统一使用一个播放器接口类来播放。类来播放。2019年5月8日感谢你的观看兰州石化学院 Page 100 在在MMAPI中,首先从数据源(如一个中,首先从数据源(如一个文件、一个捕获装置或一个流式服务)上文件、一个捕获装置或一个流式服务)上读取媒体数据内容后,然后传输给专门的读取媒体数据内容后,然后传输给专门的处理程序进行处理。处理程序进行处理。2019年5月8日感谢你的观看兰州石化学院 Page 101 处理过程主要是由处理过程

    41、主要是由DataSource类和类和Player类完成。类完成。DataSource类的作用就是类的作用就是读取和转换多媒体数据,读取和转换多媒体数据,Player类的作用类的作用就是播放这类数据。就是播放这类数据。2019年5月8日感谢你的观看兰州石化学院 Page 102 然后提供一系列的播放、暂停、停止然后提供一系列的播放、暂停、停止等播放器相关功能,等播放器相关功能,DataSource类和类和Player类的工作过程如图类的工作过程如图7-19所示。所示。2019年5月8日感谢你的观看兰州石化学院 Page 103图图7-19 7-19 数据流图数据流图2019年5月8日感谢你的观看

    42、兰州石化学院 Page 104 7.5.2 Player 7.5.2 Player接口接口 要使用要使用MMAPI进行音效开发,首先进行音效开发,首先需要导入相关的开发包,例如:需要导入相关的开发包,例如: import javax.microedition.media.*2019年5月8日感谢你的观看兰州石化学院 Page 105 创建一个创建一个Player对象有对象有3种不同的方式,种不同的方式,也就是用也就是用Manager类的不同构造方法,类的不同构造方法,Manager类一共有三个构造方。类一共有三个构造方。2019年5月8日感谢你的观看兰州石化学院 Page 106(1)Publ

    43、ic static Player createPlayer (java.lang.string locator) throws java.io.IOException, MediaException2019年5月8日感谢你的观看兰州石化学院 Page 107(2)Public static Player createPlayer (DataSource source) throws java.io.IOException, MediaException2019年5月8日感谢你的观看兰州石化学院 Page 108(3) Public static Player createPlayer (jav

    44、a. io.InputStream stream, java. lang.String trpe) throws java.io.IOException, MediaException2019年5月8日感谢你的观看兰州石化学院 Page 109 这三个方法分别可以读取指定路径的这三个方法分别可以读取指定路径的数据源或者数据源或者DataSource和和InpurStream类型类型的数据源,分别返回一个的数据源,分别返回一个Player,当一个,当一个Player对象被创建以后,使用对象被创建以后,使用Player接口的接口的start()方法就会尽可能快地启动数据的播方法就会尽可能快地启动数

    45、据的播放,当数据播放完毕以后,放,当数据播放完毕以后,Player会自动会自动关闭。关闭。2019年5月8日感谢你的观看兰州石化学院 Page 110 1 1UNREALIZED UNREALIZED 状态状态 2 2REALIZEDREALIZED状态状态 3 3PREFETCHEDPREFETCHED状态状态 4 4STARTEDSTARTED状态状态 5 5CLOSEDCLOSED状态状态2019年5月8日感谢你的观看兰州石化学院 Page 111图图7-20 7-20 状态转换图状态转换图2019年5月8日感谢你的观看兰州石化学院 Page 112 7.5.3 7.5.3 播放简单音调

    46、播放简单音调 声音的高低叫音调,也就是音符的频声音的高低叫音调,也就是音符的频率,率,J2ME提供了对简单音调播放的支持,提供了对简单音调播放的支持,MMAPI提供了一个提供了一个Manager.playTone()方方法来播放音调。法来播放音调。2019年5月8日感谢你的观看兰州石化学院 Page 113 使用使用Manager.playTone(),需要指定三,需要指定三个参数:音符、播放时间和声音的大小。个参数:音符、播放时间和声音的大小。例如下面的代码播放了一个例如下面的代码播放了一个C4的音调,的音调,C4音调是由音调是由ToneControl类的常量类的常量C4指定的。指定的。20

    47、19年5月8日感谢你的观看兰州石化学院 Page 114 7.5.4 7.5.4 播放歌曲播放歌曲 使用使用MMAPI播放歌曲很简单,主要是播放歌曲很简单,主要是用用Player的的createPlayer构造方法,只要指构造方法,只要指定网络地址,定网络地址,Player就会自动的下载歌曲就会自动的下载歌曲并播放,具体构造方法如下。并播放,具体构造方法如下。2019年5月8日感谢你的观看兰州石化学院 Page 115 public static Player createPlayer(String locator)throws IOException,MediaException2019年5

    48、月8日感谢你的观看兰州石化学院 Page 116 为了很好地控制歌曲的播放状态,需为了很好地控制歌曲的播放状态,需要要MIDlet程序实现一个程序实现一个PlayerListener接口,接口,同时实现该接口中的同时实现该接口中的playerUpdate()方法。方法。2019年5月8日感谢你的观看兰州石化学院 Page 117 public void playerUpdate(Player player,String event,Object eventDate)2019年5月8日感谢你的观看兰州石化学院 Page 118 在在playerUpdate方法里可以判断播放方法里可以判断播放的状

    49、态,例如判断播放是否结束可以用的状态,例如判断播放是否结束可以用PlayerListener.END_OF_MEDIA进行判断。进行判断。2019年5月8日感谢你的观看兰州石化学院 Page 119public void playerUpdate(Player player,String event,Object eventDate) if(event = PlayerListener.END_OF_MEDIA) 2019年5月8日感谢你的观看兰州石化学院 Page 120 为了提高播放效率,又不影响其他程为了提高播放效率,又不影响其他程序的运行,可以使用线程,只要实现序的运行,可以使用线程,

    50、只要实现Runnable接口即可。接口即可。 2019年5月8日感谢你的观看兰州石化学院 Page 121 如果想在播放过程中,对播放进行暂如果想在播放过程中,对播放进行暂停或者停止等操作,都要对播放器的各种停或者停止等操作,都要对播放器的各种状态进行判断,状态进行判断, 2019年5月8日感谢你的观看兰州石化学院 Page 122图图7-21 7-21 播放网络资源播放网络资源2019年5月8日感谢你的观看兰州石化学院 Page 123 7.5.5 7.5.5 控制音量控制音量 音量的控制可以使用音量的控制可以使用VolumeControl控控件接口,它允许设置音量的变化范围是从件接口,它允

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:手机游戏开发课件.pptx
    链接地址:https://www.163wenku.com/p-2225657.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库