이것은 테스트 파일 일뿐입니다. 저는 Sound 클래스를 가지고 있으며 다른 메인 클래스에서 호출하고 있습니다. 3 초 동안 재생 한 다음 정지하면 다시 재생되지 않습니다. 무엇이 문제일까요?Java 사운드가 멈추면 작동하지 않습니다.
이것은 나를 미치게합니다.
사운드 클래스
public class Sound {
private static URL url1, url2, url3, url4;
private static AudioClip gun, boom;
private static Clip menuClip, gameClip;
private static AudioInputStream menu, game;
public static boolean menuPlaying, gamePlaying, explosionOn;
public Sound() {
menuPlaying = false;
gamePlaying = false;
url1 = Sound.class.getResource("/laserSound.wav");
url2 = Sound.class.getResource("/boom.wav");
url3 = Sound.class.getResource("/adventure.wav");
url4 = Sound.class.getResource("/adventure.wav");
gun = Applet.newAudioClip(url1);
boom = Applet.newAudioClip(url2);
try {
game = AudioSystem.getAudioInputStream(url4);
//menu = AudioSystem.getAudioInputStream(url3);
} catch (UnsupportedAudioFileException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public void playGunSound() {
gun.play();
}
public void stopGunSound() {
gun.stop();
}
public void playExplosion() {
boom.stop();
boom.play();
}
public void stopExplosion() {
boom.stop();
}
public void playGameMusic() throws LineUnavailableException {
if (gamePlaying == false) {
gameClip = AudioSystem.getClip();
try {
gameClip.open(game);
} catch (
LineUnavailableException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
gameClip.start();
gameClip.loop(Clip.LOOP_CONTINUOUSLY);
gamePlaying = true;
}
}
public void stopGameMusic() {
gameClip.stop();
gamePlaying = false;
}
}
홈페이지 방법
public static void main(String[] args) throws LineUnavailableException, InterruptedException {
Sound sound = new Sound();
sound.playGameMusic();
TimeUnit.SECONDS.sleep(3);
sound.stopGameMusic();
TimeUnit.SECONDS.sleep(3);
sound.playGameMusic();
}
디버깅을 시도 했습니까? 새로운'Sound' 객체를 인스턴스화하면 어떨까요? –
예, 새 Sound 객체를 인스턴스화 할 때 작동합니다. 여전히 인스턴스화하지 않고 작동하지 않는 이유를 알고 있지만 당신의 도움을 주셔서 감사합니다 ... :) @ SkaryWombat – KiranGautam
아마 재생 메서드를 호출 한 후에 리소스를 해제해야 재생 사운드를 재생할 때 다시 재생됩니다 – SoulRayder