日期:2014-05-20  浏览次数:20923 次

怎么添加背景音乐
我编辑了一个小游戏,希望给它添上背景音乐,但是我看书上都是写一个可视化界面,然后监听按钮点击去播放音乐的,我希望能够在程序一运行的时候就自动播放音乐,程序关闭的时候音乐停止播放,因此,我想把这段播放音乐的代码(最好具有可移植性)放到我编好的主类中,然后就可以了,(之前遇到了一些问题:我曾经试着同时运行两个程序一个是音乐播放文件另一个是游戏文件,然后把音乐播放文件的窗口设置成不可见的,本来以为这样能够达到想要的效果,但是当我把setVisible()设为false时,音频文件播放了几秒钟后就自动停止了)
希望大家帮帮忙~
java

------解决方案--------------------
class AePlayWave extends Thread {
//要播放的音频文件名 只支持.wav音频
private String filename;
public AePlayWave(String wavfile) {
filename = wavfile;
}

public void run() {

File soundFile = new File(filename);
//音频输入流
AudioInputStream audioInputStream = null;
try {
   /****************
* AudioSystem 类充当取样音频系统资源的入口点
* 此类允许查询和访问安装在系统上的混频器
* getAudioInputStream(File file) throws UnsupportedAudioFileException,IOException
            * 从提供的file获得音频输入流
* 该file必须指向有效的音频文件数据
****************/
audioInputStream = AudioSystem.getAudioInputStream(soundFile);
} catch (Exception e1) {
e1.printStackTrace();
return;
}
//获得此音频输入流中声音数据的音频格式
AudioFormat format = audioInputStream.getFormat();

SourceDataLine auline = null;
//根据指定信息构造数据行的信息对象,这些信息包括单个音频格式
//此构造方法通常由应用程序用于描述所需的行
DataLine.Info info = new DataLine.Info(SourceDataLine.class, format);

try {
   /*******************
*  getLine(Line.Info info) throws LineUnavailableException
            *  获得与指定 Line.Info 对象中的描述匹配的行
*  如果请求 DataLine且info是DataLine.Info的实例(至少指定一种完全限定的音频格式)
*  则上一个数据行将用作返回的 DataLine 的默认格式
*******************/
auline = (SourceDataLine) AudioSystem.getLine(info);
   /*******************
* open(AudioFormat format) throws LineUnavailableException
* 打开具有指定格式的行,这样可使行获得所有所需的系统资源并变得可操作
*******************/
auline.open(format);
} catch (Exception e) {