您好我已经创建了一个小课程来在我的游戏中播放声音。在这里:
包sk.tuke.oop.game.sounds;
import java.applet.AudioClip;
import java.io.File;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;
import javax.sound.sampled.FloatControl;
public class Sound implements AudioClip {
private Clip clip;
private FloatControl volume;
private int framePosition;
public Sound(String path) {
loadMusic(path);
}
public void loadMusic(String path) {
if (clip != null)
clip.stop();
clip = null;
if (!path.equals("")) {
File soundFile = null;
try {
soundFile = new File(path);
} catch (Exception e) {
return;
}
try {
AudioInputStream input = AudioSystem.getAudioInputStream(soundFile);
clip = AudioSystem.getClip();
clip.open(input);
} catch (Exception e) {
e.printStackTrace();
clip = null;
}
}
}
public void play() {
if (clip != null) {
stop();
clip.start();
}
}
public void stop() {
if (clip != null) {
clip.stop();
clip.setFramePosition(0);
}
}
public void pause() {
if (clip != null) {
if (clip.isRunning()) {
framePosition = clip.getFramePosition();
clip.stop();
}
}
}
public void unpause() {
if (clip != null) {
if (!clip.isRunning()) {
clip.setFramePosition(framePosition);
clip.start();
}
}
}
public void loop() {
if (clip != null) {
clip.loop(clip.LOOP_CONTINUOUSLY);
}
}
public void setVolume(float vol) {
if (volume.getMinimum()+ vol <= volume.getMaximum()) {
volume.setValue(volume.getMinimum());
volume.setValue(volume.getValue() + vol);
}
}
}
当所有演员都在游戏循环之前创建,但是当我射击子弹并且我想播放声音时,它工作得很好:
javax.sound.sampled.LineUnavailableException: line with format PCM_SIGNED 44100.0 Hz, 16 bit, stereo, 4 bytes/frame, little-endian not supported.
你可以帮帮我吗?谢谢。
答案 0 :(得分:0)
如果声音文件不是mp3格式,那么尝试转换为mp3。 还要确保文件名是小写字母。