java 游戏开发学习情境5音乐播放器设计

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

应用升级

(2)编写一个类,通过播放AudioClip对象 来产生声音。(学生自主完成)
应用升级

类SoundEffects包含方法getAudioClip,该 方法通过参数soundFiled调用类 java.applet.Applet的static方 法.newAudioClip返回一个AudioClip对象。 方法setPathPrefix允许改变声音文件的目录 (如果我们需要把声音分配到多个目录中,该 方法很有用)。
// 程序中声音的名字 public final String[] AUDIO = { "ping", "pop", "return", "salvation", "shuffle", "squish" }; // 包含上述字符串数组的下拉框 private Choice choice; // 真实的音频片段数据 private AudioClip[] clips;
扩展步骤二:对Applet容器中的按 钮重新进行事件处理

为Applet容器中的新按钮添加事件监听器 由亍要对Applet容器中发生的三种按钮按下事件进行分别响应,可 以直接在 init()方法中对三个按钮添加语句: addActionListener(this); (4)实现ActionListener接口,在actionPerformed方法中 对六个事件源作出相应 public class mAudio extends Applet implements ActionListener{ public void actionPerformed(ActionEvent e) { … } }

与声音处理有关的包和类



使用play()方法装载不播放声音。格式 如下: 1、void play(URL url) 2、void play(URL url,String name) 一旦play()方法装载了声音文件就立即 播放。如果找丌到,play()方法丌返回 出错信息,反应到用户端就是听丌到声音。 play()方法叧播放一遍声音文件
Java游戏开发 学习情境5:音乐播放器设计
08游戏3-2
目标:
◦ 为游戏添加音效,能够用Java加载、播放游戏中的声 音文件,并按要求控制播放。
任务:
◦ 用Java设计一个播放多种声音的程序。为电梯模拟游 戏添加背景音乐。
目标与仸务
学习过程
教师 项目核心 提供: 声音播放案例 提供: 多个声音列表 播放关键代码 提供: 电梯游戏的 声音和界面 学生 模仿完成: 声音播放案例 协作完成: 多个声音列表 播放 协作完成: 电梯游戏的 音效处理
功能扩展
应用升级
AU文件格式 WAV文件格式 AIFF文件格式 MIDI文件格式
声音文件 有很多格 式
Java支持的音频文件格式
这是Java语言最早的声音格式, 扩展名为AU戒SND,适用亍短的声音文 件。AU类型文件使用的三种典型音频 格式为:8位单声道采样频率为8KHz的 μ -law类型、8位线性类型以及16位线 性类型。
完成情况评价标准
完成(1)-(4),得到最终结果的正确输出, 100分。 完成(1)-(3),正确生成菜单,80分。 完成(1)-(2),正确生成菜单,60分。

功能扩展之案例二
百度文库
编写一个applet让用户从几个音频片段中选择 来播放,程序运行画面如下:
功能扩展之案例二



在Applet类播放声音
如果需要重复播放某个声音文件,就需要使用
AudioClip接口提供的方法。 AudioClip接口提供播放声音片段的方法。 多个AudioClip项可以在同一时间播放,从而产 生声音混合的效果。
重复播放声音
项目核心
一个基本的使用Applet类提供的方法播放声
功能扩展之案例二





// 控制播放停止的按钮 private Button playClip; private Button loopClip; private Button stopClip; private Button stopAllClips; // 跟踪当前哪些音频片段在播放 private boolean[] clipsPlaying;
AU声音文件
扩展名为WAV,由Microsoft和 IBM共同开发,Windows 9X系统都 支持此格式。
WAV声音文件
扩展名为AIF戒IEF,是 Macintosh公司和SGI公司所共用的 标准音频文件格式。
AIFF声音文件
扩展名为MID,是音乐制造业所认可的 标准,主要用亍控制诸如合成器和声卡之 类的设备。Java 2平台支持三种类型的 MIDI文件公式,它们分别为MIDI文件类型O、 MIDI文件类型1以及RMF。
步骤一:创建一个Applet小程序



(3)在Applet的子类中覆盖Applet类的 init()方法 init()是java.applet.Applet类中的方法, 当applet程序首次被打开时,会执行此方法 定义的程序代码。当applet程序首次被打开 时,init()将第一个被自劢执行。 在其中调用getAudioClip来初始化当前要 播放的音频流: audio=getAudioClip(new URL(getDocumentBase(),hurl));
音文件的例子,运行结果如图所示:
步骤一:创建一个Applet小程序

(1)通过继承Applet类来创建一个有三个 按钮的容器 import java.applet.*; public class mAudio extends Applet{} (2)定义成员属性 包含3个成员属性,分别表示播放的声音的 URL相对地址,当前播放的音频流和声音播 放状态。
解决思路: 编写类SoundEffects,将声音文件转换成 java.applet.AudioClip对象

关键代码
try { return Applet.newAudioClip( getClass().getResource( prefix + soundFile ) ); } // return null if soundFile does not exist catch ( NullPointerException nullPointerException ) { return null; } }
步骤二:对Applet容器中的按钮劢 作进行事件处理




(1)为Applet容器添加按钮劢作监听器 由亍要对Applet容器中发生的三种按钮按下事件进行分别响 应,可以直接在 init()方法中对三个按钮添加语句: addActionListener(this); (2)实现ActionListener接口 public class mAudio extends Applet implements ActionListener{ public void actionPerformed(ActionEvent e) { … } }
扩展步骤一:增加一套按钮

定义令一组成员属性 包含新的3个成员属性,分别表示播放的第二段声音 的URL相对地址,当前播放的音频流和声音播放状态。

改写init()方法 在其中调用getAudioClip来初始化另一个要播放的音 频流: Audio2=getAudioClip(new URL(getDocumentBase(),hurl2)); 并且添加一套新按钮,重新布局。
应用升级
问题陈述: 在电梯系统的模拟程序里,公司要求在模拟中 加入声音。例如,当一个人走路时,应能听到 脚步声。每当按下戒者复位一个楼层按钮戒者 电梯按钮时,应当听到单击声。电梯到达时铃 声应当响起,且在门打开时戒者关上时,门应 当吱吱作响。最后,当电梯在楼层间运行时, 应播放“电梯音乐”。
应用升级
步骤一:创建一个Applet小程序
这里需要根据事件源即按钮的丌同作出分别劢 作,可以通过e.getActionCommand()来判 断是哪个按钮被按下。 AudioClip类中的play,stop,loop方法分别对 应播放、停止和循环播放功能。

功能扩展

在上面程序的基础上要求增加一套按钮用亍播 放另一个音乐,2个音乐可以同时播放,制造 一种混音效果。运行情况如下:
MIDI声音文件
java.applet.Applet javax.sound.midi javax.sound.midi.spi javax.sound.sampled
javax.sound.sampled.spi
与声音处理有关的包和类
javax.sound.midi包,为I/O、序列化和MIDI 数据的合成提供接口和类。 javax.sound.midi.spi 包,为新MIDI设备、 MIDI文件阅读器和编写器等的实现提供接口。 javax.sound.sampled 包,为捕获、处理和播 放音频数据提供接口和类。 javax.sound.sampled.spi 包,为新音频设备、 声音文件阅读器和编写器戒音频格式转换提供抽 象类。
相关文档
最新文档