final/src/SoundWrapper.java

41 lines
1.5 KiB
Java
Raw Normal View History

2022-06-19 18:54:38 +01:00
import javax.sound.sampled.LineUnavailableException;
import javax.sound.sampled.UnsupportedAudioFileException;
import java.io.*;
public class SoundWrapper implements Serializable {
transient public Sound sound;
public String soundString;
// please note that not as many constructors were implemented as BufferedImage, as this class was created before most sounds were added;
// as such, backwards compatibility was not needed
public SoundWrapper(String soundLocation) throws UnsupportedAudioFileException, LineUnavailableException, IOException {
sound = new Sound(soundLocation);
soundString = soundLocation;
}
public SoundWrapper() {}
@Serial
private void writeObject(ObjectOutputStream out) throws IOException {
out.writeObject(soundString);
}
@Serial
private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException, UnsupportedAudioFileException, LineUnavailableException {
Object o;
o = in.readObject();
sound = new Sound((String)o);
}
2022-06-19 23:10:09 +01:00
public static void playSound(String filePath) throws UnsupportedAudioFileException, LineUnavailableException, IOException {
Sound sound = new Sound(filePath);
if (sound == null) {
try {
sound = new Sound(filePath);
} catch (UnsupportedAudioFileException | LineUnavailableException | IOException e) {
throw new RuntimeException(e);
}
}
sound.start();
}
2022-06-19 18:54:38 +01:00
}