java中的声音效果
我一直在试图得到一个简单的“皮尤”噪音,当我的宇宙飞船发射子弹时。声音是一个.wav文件,我保存在netbeans项目的主文件夹中 当我运行代码时,我没有得到任何错误,它只是不会播放声音 在Main.java中,当按下鼠标时,它会射出子弹并播放声音。java可以在下面找到 Main.javajava中的声音效果,java,audio,netbeans,Java,Audio,Netbeans,我一直在试图得到一个简单的“皮尤”噪音,当我的宇宙飞船发射子弹时。声音是一个.wav文件,我保存在netbeans项目的主文件夹中 当我运行代码时,我没有得到任何错误,它只是不会播放声音 在Main.java中,当按下鼠标时,它会射出子弹并播放声音。java可以在下面找到 Main.java @Override public void mousePressed(MouseEvent me) { Color color = Color.yellow; if(tankMissile
@Override
public void mousePressed(MouseEvent me) {
Color color = Color.yellow;
if(tankMissile == null){
tankMissile = new Missile(launcher.getXofMissileShoot(), launcher.getYofMissileShoot(), color);
tankMissile.setTarget(launcher.x, 0);
int size = 2;
tankMissile.setExplosionMaxSize(size);
synchronized (gameData.figures) {
gameData.figures.add(tankMissile);
}
}
new Sound("pew.wav").start();
}
@Override
public void mousePressed(MouseEvent me) {
Color color = Color.yellow;
if(tankMissile == null){
tankMissile = new Missile(launcher.getXofMissileShoot(), launcher.getYofMissileShoot(), color);
tankMissile.setTarget(launcher.x, 0);
int size = 2;
tankMissile.setExplosionMaxSize(size);
synchronized (gameData.figures) {
gameData.figures.add(tankMissile);
}
try {
playSound("pew.wav");
} catch (MalformedURLException ex) {
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
} catch (LineUnavailableException ex) {
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
} catch (UnsupportedAudioFileException ex) {
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
public static void playSound(String fileName) throws MalformedURLException, LineUnavailableException, UnsupportedAudioFileException, IOException{
File url = new File(fileName);
Clip clip = AudioSystem.getClip();
AudioInputStream ais = AudioSystem.
getAudioInputStream( url );
clip.open(ais);
clip.start();
}
Sound.java
//www.anyexample.com/programming/java/java_play_wav_sound_file.xml
import java.io.*;
import javax.sound.sampled.*;
public class Sound extends Thread{
private String fileName;
public Sound(String wavfile){
fileName = wavfile;
}
@Override
public void run(){
File soundFile = new File(fileName);
if(!soundFile.exists()){
System.err.println("Wave file not found");
}
AudioInputStream audioInputStream = null;
try{
audioInputStream = AudioSystem.getAudioInputStream(soundFile);
}
catch(UnsupportedAudioFileException e){
e.printStackTrace();
return;
}
catch(IOException e){
e.printStackTrace();
return;
}
AudioFormat format = audioInputStream.getFormat();
SourceDataLine auline = null;
DataLine.Info info = new DataLine.Info(SourceDataLine.class, format);
try{
auline = (SourceDataLine) AudioSystem.getLine(info);
auline.open(format);
}
catch(LineUnavailableException e){
e.printStackTrace();
return;
}
catch(Exception e){
e.printStackTrace();
return;
}
if(auline.isControlSupported(FloatControl.Type.PAN)){
FloatControl pan = (FloatControl) auline.getControl(FloatControl.Type.PAN);
}
auline.start();
}
}
我终于成功了。这就是我所做的
Main.java
@Override
public void mousePressed(MouseEvent me) {
Color color = Color.yellow;
if(tankMissile == null){
tankMissile = new Missile(launcher.getXofMissileShoot(), launcher.getYofMissileShoot(), color);
tankMissile.setTarget(launcher.x, 0);
int size = 2;
tankMissile.setExplosionMaxSize(size);
synchronized (gameData.figures) {
gameData.figures.add(tankMissile);
}
}
new Sound("pew.wav").start();
}
@Override
public void mousePressed(MouseEvent me) {
Color color = Color.yellow;
if(tankMissile == null){
tankMissile = new Missile(launcher.getXofMissileShoot(), launcher.getYofMissileShoot(), color);
tankMissile.setTarget(launcher.x, 0);
int size = 2;
tankMissile.setExplosionMaxSize(size);
synchronized (gameData.figures) {
gameData.figures.add(tankMissile);
}
try {
playSound("pew.wav");
} catch (MalformedURLException ex) {
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
} catch (LineUnavailableException ex) {
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
} catch (UnsupportedAudioFileException ex) {
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
public static void playSound(String fileName) throws MalformedURLException, LineUnavailableException, UnsupportedAudioFileException, IOException{
File url = new File(fileName);
Clip clip = AudioSystem.getClip();
AudioInputStream ais = AudioSystem.
getAudioInputStream( url );
clip.open(ais);
clip.start();
}
稍后在Main.java中
public static void playSound(String fileName) throws MalformedURLException, LineUnavailableException, UnsupportedAudioFileException, IOException{
File url = new File(fileName);
Clip clip = AudioSystem.getClip();
AudioInputStream ais = AudioSystem.
getAudioInputStream( url );
clip.open(ais);
clip.start();
}
您可以使用此方法播放wav格式。您应该编辑少量代码并与代码混合
public static synchronized void playSound(final String url) {
new Thread(new Runnable() {
// The wrapper thread is unnecessary, unless it blocks on the
// Clip finishing; see comments.
public void run() {
try {
Clip clip = AudioSystem.getClip();
AudioInputStream inputStream = AudioSystem.getAudioInputStream(
Main.class.getResourceAsStream("/path/to/sounds/" + url));
clip.open(inputStream);
clip.start();
} catch (Exception e) {
System.err.println(e.getMessage());
}
}
}).start();
}
看看这个类似的问题:stackoverflow.com/questions/2416935/how-to-play-wav-files-with-javas使用这个我仍然没有得到一个错误,但是它没有播放声音。它现在说它输出了一个null错误,所以它可能找不到声音文件。我的代码工作正常,找到的文件很好。它没有任何错误,而且它确实要考虑到声音的实际播放,只是它没有这样做。