《Java游戏开发》2

上传人:油条 文档编号:48603300 上传时间:2018-07-18 格式:PPT 页数:102 大小:1.81MB
返回 下载 相关 举报
《Java游戏开发》2_第1页
第1页 / 共102页
《Java游戏开发》2_第2页
第2页 / 共102页
《Java游戏开发》2_第3页
第3页 / 共102页
《Java游戏开发》2_第4页
第4页 / 共102页
《Java游戏开发》2_第5页
第5页 / 共102页
点击查看更多>>
资源描述

《《Java游戏开发》2》由会员分享,可在线阅读,更多相关《《Java游戏开发》2(102页珍藏版)》请在金锄头文库上搜索。

1、JavaJava游戏开发游戏开发 学习情境学习情境5 5:音乐播放器设计:音乐播放器设计目标与任务目标与任务 目标: 为游戏添加音效,能够用Java加载、播放游戏中的声 音文件,并按要求控制播放。任务: 用Java设计一个播放多种声音的程序。为电梯模拟游 戏添加背景音乐。 学习过程学习过程 项目核心功能扩展应用升级教师学生提供: 声音播放案例模仿完成: 声音播放案例提供: 多个声音列表 播放关键代码协作完成: 多个声音列表 播放提供: 电梯游戏的 声音和界面协作完成: 电梯游戏的 音效处理JavaJava支持的音频文件格式支持的音频文件格式AU文件格式WAV文件格式AIFF文件格式MIDI文件

2、格式声音文件 有很多格 式AUAU声音文件声音文件这是Java语言最早的声音格式, 扩展名为AU或SND,适用于短的声音文 件。AU类型文件使用的三种典型音频 格式为:8位单声道采样频率为8KHz的 -law类型、8位线性类型以及16位线 性类型。WAVWAV声音文件声音文件扩展名为WAV,由Microsoft和 IBM共同开发,Windows 9X系统都 支持此格式。AIFFAIFF声音文件声音文件扩展名为AIF或IEF,是 Macintosh公司和SGI公司所共用的 标准音频文件格式。MIDIMIDI声音文件声音文件扩展名为MID,是音乐制造业所认可的 标准,主要用于控制诸如合成器和声卡之

3、 类的设备。Java 2平台支持三种类型的 MIDI文件公式,它们分别为MIDI文件类型O 、MIDI文件类型1以及RMF。 与声音处理有关的包和类与声音处理有关的包和类java.applet.Appletjavax.sound.midi javax.sound.midi.spijavax.sound.sampled javax.sound.sampled.spijavax.sound.midi包,为I/O、序列化和MIDI 数据的合成提供接口和类。 javax.sound.midi.spi 包,为新MIDI设备、 MIDI文件阅读器和编写器等的实现提供接口。 javax.sound.samp

4、led 包,为捕获、处理和播 放音频数据提供接口和类。 javax.sound.sampled.spi 包,为新音频设备 、声音文件阅读器和编写器或音频格式转换提供 抽象类。与声音处理有关的包和类与声音处理有关的包和类在在AppletApplet类播放声音类播放声音使用play()方法装载与播放声音。格式 如下:1、void play(URL url)2、void play(URL url,String name) 一旦play()方法装载了声音文件就立即 播放。如果找不到,play()方法不返回 出错信息,反应到用户端就是听不到声音 。 play()方法只播放一遍声音文件重复播放声音重复播放

5、声音如果需要重复播放某个声音文件,就需要使用 AudioClip接口提供的方法。AudioClip接口提供播放声音片段的方法。多个AudioClip项可以在同一时间播放,从而产 生声音混合的效果。 项目核心项目核心一个基本的使用Applet类提供的方法播放声 音文件的例子,运行结果如图所示: 步骤一:创建一个步骤一:创建一个AppletApplet小程序小程序 (1)通过继承Applet类来创建一个有三个 按钮的容器import java.applet.*; public class mAudio extends Applet (2)定义成员属性 包含3个成员属性,分别表示播放的声音的 URL

6、相对地址,当前播放的音频流和声音播 放状态。步骤一:创建一个步骤一:创建一个AppletApplet小程序小程序 (3)在Applet的子类中覆盖Applet类的 init()方法 init()是java.applet.Applet类中的方法, 当applet程序首次被打开时,会执行此方法 定义的程序代码。当applet程序首次被打开 时,init()将第一个被自动执行。 在其中调用getAudioClip来初始化当前要 播放的音频流:audio=getAudioClip(new URL(getDocumentBase(),hurl);步骤二:对步骤二:对AppletApplet容器中的按钮动

7、容器中的按钮动 作进行事件处理作进行事件处理 (1)为Applet容器添加按钮动作监听器 由于要对Applet容器中发生的三种按钮按下事件进行分别响 应,可以直接在 init()方法中对三个按钮添加语句: addActionListener(this); (2)实现ActionListener接口 public class mAudio extends Applet implements ActionListener public void actionPerformed(ActionEvent e) 步骤一:创建一个步骤一:创建一个AppletApplet小程序小程序 这里需要根据事件源即按

8、钮的不同作出分别动 作,可以通过e.getActionCommand()来判 断是哪个按钮被按下。AudioClip类中的play,stop,loop方法分别对 应播放、停止和循环播放功能。 功能扩展功能扩展 在上面程序的基础上要求增加一套按钮用于播 放另一个音乐,2个音乐可以同时播放,制造 一种混音效果。运行情况如下: 扩展步骤一:增加一套按钮扩展步骤一:增加一套按钮 定义令一组成员属性 包含新的3个成员属性,分别表示播放的第二段声音 的URL相对地址,当前播放的音频流和声音播放状态 。改写init()方法 在其中调用getAudioClip来初始化另一个要播放的音 频流: Audio2=g

9、etAudioClip(new URL(getDocumentBase(),hurl2); 并且添加一套新按钮,重新布局。 扩展步骤二:对扩展步骤二:对AppletApplet容器中的按容器中的按 钮重新进行事件处理钮重新进行事件处理 为Applet容器中的新按钮添加事件监听器 由于要对Applet容器中发生的三种按钮按下事件进行分别响应,可 以直接在 init()方法中对三个按钮添加语句: addActionListener(this); (4)实现ActionListener接口,在actionPerformed方法中 对六个事件源作出相应 public class mAudio exte

10、nds Applet implements ActionListener public void actionPerformed(ActionEvent e) 完成情况评价标准完成情况评价标准完成(1)-(4),得到最终结果的正确输出 ,100分。 完成(1)-(3),正确生成菜单,80分。 完成(1)-(2),正确生成菜单,60分。 功能扩展之案例二功能扩展之案例二 编写一个applet让用户从几个音频片段中选择 来播放,程序运行画面如下: 功能扩展之案例二功能扩展之案例二 / 程序中声音的名字 public final String AUDIO = “ping“, “pop“, “retu

11、rn“, “salvation“, “shuffle“, “squish“ ; / 包含上述字符串数组的下拉框 private Choice choice; / 真实的音频片段数据 private AudioClip clips; 功能扩展之案例二功能扩展之案例二 / 控制播放停止的按钮 private Button playClip; private Button loopClip; private Button stopClip; private Button stopAllClips; / 跟踪当前哪些音频片段在播放 private boolean clipsPlaying; 应用升级应

12、用升级 问题陈述: 在电梯系统的模拟程序里,公司要求在模拟中 加入声音。例如,当一个人走路时,应能听到 脚步声。每当按下或者复位一个楼层按钮或者 电梯按钮时,应当听到单击声。电梯到达时铃 声应当响起,且在门打开时或者关上时,门应 当吱吱作响。最后,当电梯在楼层间运行时, 应播放“电梯音乐”。 应用升级应用升级解决思路:编写类SoundEffects,将声音文件转换成 java.applet.AudioClip对象关键代码关键代码try return Applet.newAudioClip( getClass().getResource( prefix + soundFile ) );/ ret

13、urn null if soundFile does not existcatch ( NullPointerException nullPointerException ) return null;应用升级应用升级类SoundEffects包含方法getAudioClip,该 方法通过参数soundFiled调用类 java.applet.Applet的static方法 .newAudioClip返回一个AudioClip对象。方 法setPathPrefix允许改变声音文件的目录( 如果我们需要把声音分配到多个目录中,该方 法很有用)。 应用升级应用升级(2)编写一个类,通过播放Audio

14、Clip对象 来产生声音。(学生自主完成) JavaJava游戏开发游戏开发 学习情境学习情境6 6:小虫动画程序设计:小虫动画程序设计目标与任务目标与任务 目标: 用Java多线程为游戏添加动画,掌握多线程的实现、 控制方法。掌握通过双缓冲消除图像闪烁的方法。任务: 创建一个燃烧的火焰动画,为“电梯模拟游戏”添加人行 走,电梯运行的动画 学习过程学习过程 项目核心功能扩展应用升级教师学生提供: 绘制图像案例模仿完成: 绘制图像案例提供: 线程控制图像 间歇显示协作完成: 线程控制图像 间歇显示成动画提供: 电梯游戏的 动画和界面协作完成: 电梯游戏的 场景动画加载详细步骤详细步骤 步骤一:用

15、屏外绘制技术在一个窗体上显示图 像 步骤二:创建线程实现图像的间歇显示 步骤三:多个图形顺序显示形成动画 步骤四:为“电梯模拟游戏”添加人行走,电梯 运行的动画 步骤五:课后创新作业:自主设计一个程序实 现:显示滚动的字幕JavaJava在屏幕上画图的方法在屏幕上画图的方法paint,repaint ,update, superpaint都可 在屏幕上画图注意几个方法的 区别repaintsuperpaintupdatepaint几个方法的区别几个方法的区别paint在当前容器中绘制图形,要这个类中存 在这个方法则自动加载。repaint重绘当前图形,会先执行update中的 方法,再执行paint中的方法。update更新当前图形,通过repaint来调用。superpaint是隐式调用,当继承一个容器后会 自动调用此方法,用于显示当前容器中的组件 。屏外绘制缓冲器屏外绘制缓冲器前面介绍的技术都是通过Graphics2D容器直 接把对象绘制到窗体上。屏外缓冲就是创建一个虚拟的applet来缓冲存 放将要绘制的图形。屏外缓冲绘图的目的是加快图形的绘制,消除 屏闪。缓冲屏幕真实屏幕项目核心:屏外缓冲绘图项目核心:屏

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号