Fix sound playing
This commit is contained in:
parent
b972169341
commit
1727579f84
@ -1,57 +1,60 @@
|
|||||||
package com.annimon.turrets;
|
package com.annimon.turrets;
|
||||||
|
|
||||||
import com.annimon.turrets.util.ExceptionHandler;
|
import com.annimon.turrets.util.ExceptionHandler;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
import javax.sound.sampled.AudioInputStream;
|
import javax.sound.sampled.AudioInputStream;
|
||||||
import javax.sound.sampled.AudioSystem;
|
import javax.sound.sampled.AudioSystem;
|
||||||
import javax.sound.sampled.Clip;
|
import javax.sound.sampled.Clip;
|
||||||
import javax.sound.sampled.LineUnavailableException;
|
import javax.sound.sampled.LineUnavailableException;
|
||||||
import javax.sound.sampled.UnsupportedAudioFileException;
|
import javax.sound.sampled.UnsupportedAudioFileException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @author aNNiMON
|
* @author aNNiMON
|
||||||
*/
|
*/
|
||||||
public enum Sound {
|
public enum Sound {
|
||||||
CLICK("/res/click.wav"),
|
CLICK("/res/click.wav"),
|
||||||
EXPLOSION_1("/res/explosion1.wav"),
|
EXPLOSION_1("/res/explosion1.wav"),
|
||||||
EXPLOSION_2("/res/explosion2.wav");
|
EXPLOSION_2("/res/explosion2.wav");
|
||||||
|
|
||||||
private static boolean enabled;
|
private static boolean enabled;
|
||||||
private final Clip soundClip;
|
private final Clip soundClip;
|
||||||
|
|
||||||
Sound(String resource) {
|
Sound(String resource) {
|
||||||
soundClip = loadClip(resource);
|
soundClip = loadClip(resource);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean isEnabled() {
|
public static boolean isEnabled() {
|
||||||
return enabled;
|
return enabled;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void setEnabled(boolean enabled) {
|
public static void setEnabled(boolean enabled) {
|
||||||
Sound.enabled = enabled;
|
Sound.enabled = enabled;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void play() {
|
public void play() {
|
||||||
if (enabled) {
|
if (enabled && (soundClip != null)) {
|
||||||
soundClip.setFramePosition(0);
|
soundClip.setFramePosition(0);
|
||||||
soundClip.start();
|
soundClip.start();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private Clip loadClip(String resource) {
|
private Clip loadClip(String resource) {
|
||||||
Clip clip = null;
|
Clip clip = null;
|
||||||
try {
|
try {
|
||||||
final URL url = getClass().getResource(resource);
|
final URL url = getClass().getResource(resource);
|
||||||
try (AudioInputStream ais = AudioSystem.getAudioInputStream(url)) {
|
try (AudioInputStream ais = AudioSystem.getAudioInputStream(url)) {
|
||||||
clip = AudioSystem.getClip();
|
clip = AudioSystem.getClip();
|
||||||
clip.open(ais);
|
clip.open(ais);
|
||||||
}
|
}
|
||||||
} catch (IOException | UnsupportedAudioFileException | LineUnavailableException ex) {
|
} catch (IllegalArgumentException iae) {
|
||||||
ExceptionHandler.handle(ex);
|
Sound.setEnabled(false);
|
||||||
}
|
ExceptionHandler.handle(iae);
|
||||||
return clip;
|
} catch (IOException | UnsupportedAudioFileException | LineUnavailableException ex) {
|
||||||
}
|
ExceptionHandler.handle(ex);
|
||||||
|
}
|
||||||
}
|
return clip;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user