扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
在src下面建一个文件夹music放音乐如withoutYou.mp3
在钦南等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供成都网站制作、网站建设 网站设计制作按需设计网站,公司网站建设,企业网站建设,成都品牌网站建设,成都全网营销,成都外贸网站建设,钦南网站建设费用合理。
try{
java.net.URL musicPath=MyActionListener.class.getResource("/music/withoutYou.mp3");
System.out.println(musicPath);
music= java.applet.Applet.newAudioClip(musicPath);
music.loop();//循环播放
}catch( Exception ef){
javax.swing.JOptionPane.showMessageDialog(null, "音乐播放失败");
}
绝对可以;
不行找我; qq983714669;要给我80分;
一楼的回答说对了一部分,主要还是多线程的问题.
我的毕业设计也是做的一个小游戏程序--坦克大战,当初游戏逻辑界面都完成了想加入音频的时候也遇到了困难,最开始想到了多线程处理,也就是自身游戏的绘图线程占用着主线程,如果此时再在同一线程播放音频的话肯定会造成音频流或者绘图类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();//停止播放
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流