上java贪吃游戏课的时候,我想添加背景音乐,用以下简单的步骤就可以完成。 测试是有效的哦。
调用方法:
new Thread ()while ) true ) ) {Data.playMusic; }
().start ); //Lambda公式
//newthread(newrunnable ) )
//
//@Override
//publicvoidrun(} ()
//while (真) {
//playMusic (;
//}
//}
//}.start (; //打开用于播放音乐的线程
方法主体:
import java.io.File;
import javax.sound.sampled.audio格式;
import javax.sound.sampled.audio inputstream;
import javax.sound.sampled.audiosystem;
import javax.sound.sampled.dataline;
导入javax.sound.sampled.float control;
导入javax.sound.sampled.source dataline;
静态语音播放音乐() /背景音乐播放
try {
audioinputstreamais=audiosystem.getaudioinputstream (新文件(' d :/my soft/eclipse /蛇/music.wav ' ) ); //绝对路径
audio格式AIF=ais.get格式(;
final source数据中心;
dataline.info info=new dataline.info (source dataline.class,aif );
SDL=(源数据) audiosystem.getline ) info;
SDL.Open(AIF;
sdl.start (;
floatcontrolfc=(floatcontrol ) SDL.getcontrol ) floatcontrol.type.master_gain;
//value可用于从0-2.0开始设置音量
双值=2;
floatdb=(float ) ) math.log ) value==0.0? 0.0001:value(/math.log ) * 20.0 ) * 20.0 );
fc.setvalue(db;
int nByte=0;
final int SIZE=1024 * 64
byte[] buffer=new byte[SIZE];
wile (字节!=-1 ()
nbyte=ais.read(buffer,0,SIZE );
SDL.write(buffer,0,nByte );
}
sdl.stop (;
}catch(exceptione ) {
e .打印堆栈跟踪(;
}
}
注意事项:
如果程序报告了错误:
exceptioninthread ' main ' javax.sound.sampled.unsupportedaudiofileexception : couldnotgetaudioinputstreamfrominputfilion
at javax.sound.sampled.audiosystem.getaudioinputstream (audiosystem.Java :1189 )。
atcom.ywq3. test.main (test.Java :21 )。
异常消息是不支持的格式,即该音频文件不受支持,并且无法获得该文件的输入流。 我使用的是wav格式,但音频文件原本是mp3,如果转换为wav时不能直接更改,就会报告上述错误。 如果错误地报告为wav文件但不支持该格式,则该wav文件的内部格式可能存在错误。 安利格式转换网站: https://cn.office-converter.com/convert-to-wav。 我只要转换成正确的wav格式就能播放音乐。 我们访问了博客http://blog.csdn.net/QQ _ 25827845/article/details/79026786
如果这篇文章有用的话,不要对萌新赞不绝口,鼓励危机中的白猫新坚持写博客的热情!