java swt实现播放音乐代码如下:
成都创新互联公司2013年至今,先为杜集等服务建站,杜集等地企业,进行企业商务咨询服务。为杜集企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。
public void play(String Filename)
{
try{
// 用输入流打开一音频文件
InputStream in = new FileInputStream(Filename);//FIlename 是你加载的声音文件如(“game.wav”)
// 从输入流中创建一个AudioStream对象
AudioStream as = new AudioStream(in);
AudioPlayer.player.start(as);//用静态成员player.start播放音乐
//AudioPlayer.player.stop(as);//关闭音乐播放
//如果要实现循环播放,则用下面的三句取代上面的“AudioPlayer.player.start(as);”这句
/*AudioData data = as.getData();
ContinuousAudioDataStream gg= new ContinuousAudioDataStream (data);
AudioPlayer.player.start(gg);// Play audio.
*/
//如果要用一个 URL 做为声音流的源(source),则用下面的代码所示替换输入流来创建声音流:
/*AudioStream as = new AudioStream (url.openStream());
*/
} catch(FileNotFoundException e){
System.out.print("FileNotFoundException ");
} catch(IOException e){
System.out.print("有错误!");
}
}
一楼的回答说对了一部分,主要还是多线程的问题.
我的毕业设计也是做的一个小游戏程序--坦克大战,当初游戏逻辑界面都完成了想加入音频的时候也遇到了困难,最开始想到了多线程处理,也就是自身游戏的绘图线程占用着主线程,如果此时再在同一线程播放音频的话肯定会造成音频流或者绘图类paint阻塞,所以这时要为音频加入一个单独额外的线程,已达到避免线程阻塞的作用.
但是此时还是会出现音频不流畅的情况(当然,大多情况是出现短暂音效后便消失),主要问题在于Java在利用线程读取音频的时候,是通过流的方式读取的,此时可以考虑在程序加载之前先“预载”一次音频,当需要的时候再调用它的播放线程,利用流处理.这么做的好处是将音频存放在内存中,当需要的时候能正常的出现.当然,后面这段情况是在你运用到了多线程的时候才会出现的。
找了下毕设时的代码,如下:
/**
*该方法为音频流缓冲方法,在调用音频播放线程时调用
*/
public BufferedInputStream loadBomb(){
BufferedInputStream bufbomb = null;
try{
File dir = new File("D:/java/TankWar2.6/"); //所要播放文件的路径
File fObject = new File(dir,"bomb.wav"); //音频名
FileInputStream file = new FileInputStream(fObject);
bufbomb = new BufferedInputStream(file);
}catch(IOException e) {
System.out.println(e.getMessage());
}
return bufbomb;
}
/**
* 缓冲完毕的核爆音频播放线程
*/
private class BombMusic implements Runnable{ //通过流读取声音文件
BufferedInputStream buf;
public void run(){
buf = loadBomb();
try{
AudioStream audio = new AudioStream(buf);
AudioPlayer.player.start(audio);
}catch(IOException e){
e.printStackTrace();
}
}
}
不知道你是在java里哪添加?Swing界面中吗?
下面这个是我之前做Swing界面程序时添加音乐的代码,希望对你有帮助
AudioClip[] musics;//定义音乐集合
musics = new AudioClip[2];//初始化
URL url1 = this.getClass().getResource("/ReadyGo.WAV"); //定义音乐文件地址
URL url2 = this.getClass().getResource("/back1.mid"); //定义音乐文件地址
musics[0] = JApplet.newAudioClip(url1);
musics[1] = JApplet.newAudioClip(url2);
musics[0].play();//音乐开始执行
musics[1].stop();//停止播放