版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Java游戏开发学习情境5:音乐播放器设计,08游戏3-2,目标与任务,目标: 为游戏添加音效,能够用Java加载、播放游戏中的声音文件,并按要求控制播放。 任务: 用Java设计一个播放多种声音的程序。为电梯模拟游戏添加背景音乐。,学习过程,项目核心,功能扩展,应用升级,教师,学生,提供: 声音播放案例,模仿完成: 声音播放案例,提供: 多个声音列表 播放关键代码,协作完成: 多个声音列表 播放,提供: 电梯游戏的 声音和界面,协作完成: 电梯游戏的 音效处理,Java支持的音频文件格式,AU文件格式 WAV文件格式 AIFF文件格式 MIDI文件格式,声音文件有很多格式,AU声音文件,这是
2、Java语言最早的声音格式,扩展名为AU或SND,适用于短的声音文件。AU类型文件使用的三种典型音频格式为:8位单声道采样频率为8KHz的-law类型、8位线性类型以及16位线性类型。,WAV声音文件,扩展名为WAV,由Microsoft和IBM共同开发,Windows 9X系统都支持此格式。,AIFF声音文件,扩展名为AIF或IEF,是Macintosh公司和SGI公司所共用的标准音频文件格式。,MIDI声音文件,扩展名为MID,是音乐制造业所认可的标准,主要用于控制诸如合成器和声卡之类的设备。Java 2平台支持三种类型的MIDI文件公式,它们分别为MIDI文件类型O、MIDI文件类型1以
3、及RMF。,与声音处理有关的包和类,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 包,为新音频设备、声音文件阅读器
4、和编写器或音频格式转换提供抽象类。,与声音处理有关的包和类,在Applet类播放声音,使用play()方法装载与播放声音。格式如下: 1、void play(URL url) 2、void play(URL url,String name) 一旦play()方法装载了声音文件就立即播放。如果找不到,play()方法不返回出错信息,反应到用户端就是听不到声音。 play()方法只播放一遍声音文件,重复播放声音,如果需要重复播放某个声音文件,就需要使用AudioClip接口提供的方法。 AudioClip接口提供播放声音片段的方法。 多个AudioClip项可以在同一时间播放,从而产生声音混合的效
5、果。,项目核心,一个基本的使用Applet类提供的方法播放声音文件的例子,运行结果如图所示:,步骤一:创建一个Applet小程序,(1)通过继承Applet类来创建一个有三个按钮的容器 import java.applet.*; public class mAudio extends Applet (2)定义成员属性 包含3个成员属性,分别表示播放的声音的URL相对地址,当前播放的音频流和声音播放状态。,步骤一:创建一个Applet小程序,(3)在Applet的子类中覆盖Applet类的init()方法 init()是java.applet.Applet类中的方法,当applet程序首次被打开
6、时,会执行此方法定义的程序代码。当applet程序首次被打开时,init()将第一个被自动执行。 在其中调用getAudioClip来初始化当前要播放的音频流: audio=getAudioClip(new URL(getDocumentBase(),hurl);,步骤二:对Applet容器中的按钮动作进行事件处理,(1)为Applet容器添加按钮动作监听器 由于要对Applet容器中发生的三种按钮按下事件进行分别响应,可以直接在 init()方法中对三个按钮添加语句: addActionListener(this); (2)实现ActionListener接口 public class mA
7、udio extends Applet implements ActionListener public void actionPerformed(ActionEvent e) ,步骤一:创建一个Applet小程序,这里需要根据事件源即按钮的不同作出分别动作,可以通过e.getActionCommand()来判断是哪个按钮被按下。 AudioClip类中的play,stop,loop方法分别对应播放、停止和循环播放功能。,功能扩展,在上面程序的基础上要求增加一套按钮用于播放另一个音乐,2个音乐可以同时播放,制造一种混音效果。运行情况如下:,扩展步骤一:增加一套按钮,定义令一组成员属性 包含新的
8、3个成员属性,分别表示播放的第二段声音的URL相对地址,当前播放的音频流和声音播放状态。改写init()方法 在其中调用getAudioClip来初始化另一个要播放的音频流: Audio2=getAudioClip(new URL(getDocumentBase(),hurl2); 并且添加一套新按钮,重新布局。,扩展步骤二:对Applet容器中的按钮重新进行事件处理,为Applet容器中的新按钮添加事件监听器 由于要对Applet容器中发生的三种按钮按下事件进行分别响应,可以直接在 init()方法中对三个按钮添加语句: addActionListener(this); (4)实现Actio
9、nListener接口,在actionPerformed方法中对六个事件源作出相应 public class mAudio extends Applet implements ActionListener public void actionPerformed(ActionEvent e) ,完成情况评价标准,完成(1)-(4),得到最终结果的正确输出,100分。 完成(1)-(3),正确生成菜单,80分。 完成(1)-(2),正确生成菜单,60分。,功能扩展之案例二,编写一个applet让用户从几个音频片段中选择来播放,程序运行画面如下:,功能扩展之案例二,/ 程序中声音的名字 public
10、 final String AUDIO = ping, pop, return, salvation, shuffle, squish ; / 包含上述字符串数组的下拉框 private Choice choice; / 真实的音频片段数据 private AudioClip clips;,功能扩展之案例二,/ 控制播放停止的按钮 private Button playClip; private Button loopClip; private Button stopClip; private Button stopAllClips; / 跟踪当前哪些音频片段在播放 private boole
11、an clipsPlaying;,应用升级,问题陈述: 在电梯系统的模拟程序里,公司要求在模拟中加入声音。例如,当一个人走路时,应能听到脚步声。每当按下或者复位一个楼层按钮或者电梯按钮时,应当听到单击声。电梯到达时铃声应当响起,且在门打开时或者关上时,门应当吱吱作响。最后,当电梯在楼层间运行时,应播放“电梯音乐”。,应用升级,解决思路: 编写类SoundEffects,将声音文件转换成java.applet.AudioClip对象,关键代码,try return Applet.newAudioClip( getClass().getResource( prefix + soundFile ) ); / return null if soundFile does not exist catch ( NullPointerException nullPointerException ) return null; ,应用升级,类SoundEffects包含方法getAud
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年大学第四学年(学前教育)幼儿音乐教育试题及答案
- 2026年大学第四学年(建筑工程施工)装配式构件安装试题及答案
- 2026年大学第四学年(计算机应用)短视频剪辑制作试题及答案
- 重庆市长寿区2025-2026学年初三下学期第一次综合测试语文试题含解析
- 浙江省台州市临海市2025-2026学年初三下第二次质量检查语文试题含解析
- 山西省晋城高平市重点中学2026年初三下学期第一次质量检测试题(语文试题文)试题含解析
- 新疆维吾尔自治区阿克苏地区沙雅县2025-2026学年初三一诊考试-英语试题含解析
- 潍坊市2026年初三下学期第三次诊断考试数学试题含解析
- 重庆市北岸区重点达标名校2026届中考冲刺四生物试题含解析
- 2025 高中文言文阅读理解之古代兵器文化课件
- 2025至2030年中国演出服务行业市场行情监测及发展前景研判报告
- T/CMES 15001-2023自行式自上料搅拌机通用技术要求
- T/CECS 10336-2023地面防滑性能分级及试验方法
- 老年照护复习题+答案
- 2024年山东地区光明电力服务公司招聘笔试真题
- 《脑出血护理查房范例》课件
- led显示屏安装协议合同书
- 中国地域性文化课件
- 2025至2030中国超导市场发展现状与前景展望预测研究报告版
- 植物化学保护试题及答案
- GB/T 3917.3-2025纺织品织物撕破性能第3部分:梯形试样撕破强力的测定
评论
0/150
提交评论