Java目前支持的声音文件只有一种格式,那就是SUN公司的AU格式(.AU文件),也称为u-law格式 。由于AU格式的声音仅有8KHz的采样频率且不支持立体声效果,所以音质不算太好 。唯一的好处就是AU声音文件的尺寸比其它格式?。欣谕洗?。一般,我们较熟悉的大都是WAV格式的声音文件,因此必须先将它们转换为AU格式(可以选用Goldwave软件来进行这种格式转换) 。
声音文件准备好以后,就可以考虑将它装载进来并播放 。在Applet类中提供的play( )方法可以将声音文件的装载与播放一并完成,其调用格式如下:
void play(URL url)
void play(URL url, String name)
可见,play( )方法的调用格式与getImage( )方法是完全一样的 , 也采用URL来定位声音文件 。例如,某声音文件audio.au与applet文件存放在同一目录下,可以这样写:
play(getCodeBase( ),"audio.au");
一旦play( )方法装载了该声音文件 , 就立即播放 。如果找不到指定URL下的声音文件,play( )方法不返回出错信息 , 只是听不到想听的声音而已 。
由于play( )方法只能将声音播放一遍,若想循环播放某声音作为背景音乐,就需要用到功能更强大的AudioClip类,它能更有效地管理声音的播放操作 。因为它被定义在java.applet程序包中 , 所以使用该类的话,不要忘了在程序头部加上:
import java.applet.AudioClip;
为了得到AudioClip对象,我们可以调用Applet类中的getAudioClip( )方法 。它能装载指定URL的声音文件,并返回一个AudioClip对象,其调用格式如下:
AudioClip getAudioClip(URL url)
AudioClip getAudioClip(URL url, String name)
得到AudioClip对象以后,就可以调用AudioClip类中所提供的各种方法来操作其中的声音数据 , 这些方法如表4-4所示 。
如果getAudioClip( )方法没有找到所指定的声音文件,就会返回null值 。所以,在调用表4-4中所列的方法前 , 应该先检查一下得到的AudioClip对象不是null,因为在null对象上调用上述方法将导致出错 。
如果需要的话,我们还可以在applet中同时装载几个声音文件来一起播放 , 到时候,这些声音将混合在一起,就象二重奏一样 。另外还有一点要说明的是 , 如果我们使用AudioClip对象的loop( )方法来重复播放背景音乐时,千万不要忘记在适当的时候调用AudioClip对象的stop( )方法来结束放音 , 否则的话,即使用户离开这一Web页面 , 该声音也不会停止,这无疑将会惹恼用户 。因此,一般我们都在applet的stop( )方法中添上停止播放的代码 。
例如,下面这段程序将播放两段声音,一段是连续播放的背景音乐 , 另一段是讲话录音 。
import java.applet.AudioClip;
public class Audios extends java.applet.Applet{
AudioClip bgmusic,speak;
public void init(){
bgmusic=getAudioClip(getDocumentBase(),"space.au");
speak=getAudioClip(getDocumentBase(),"intro.au");
}
public void start(){
if(bgmusic!=null)
bgmusic.loop();
if(speak!=null)
speak.play();
}
public void stop(){
if(bgmusic!=null)
bgmusic.stop(); //关闭背景音乐 , 切记 。
}
}
【java代码.实现声音 如何在java程序中添加音效】java代码.实现声音的介绍就聊到这里吧 , 感谢你花时间阅读本站内容,更多关于如何在java程序中添加音效、java代码.实现声音的信息别忘了在本站进行查找喔 。
推荐阅读
- 双人动作解谜游戏,双人动作解谜游戏大全
- html中a标签的样式,html中a标签属性设置
- jqueryajax.request的简单介绍
- 微信直播交税要交多少钱,微信直播避税
- vb.net窗体 vbnet窗体数据如何交互
- chatgpt反向套话,反向atrp
- flutter放大透明,flutter 图片缩放
- 直播软件下载电子书,课堂直播电子书
- 调php用数据库的方法吗 php数据库编程