public void stop() { onceClip.stop(); //Cut short the one-time sound. if (looping) { loopClip.stop(); //Stop the sound loop. } }
public void start() { if (looping) { loopClip.loop(); //Restart the sound loop. } }
public void actionPerformed(ActionEvent event) { //PLAY BUTTON Object source = event.getSource(); if (source == playOnce) { if (onceClip == null) { //Try to get the AudioClip. onceClip = soundList.getClip(onceFile); }
if (onceClip != null) { //If the sound is loaded: onceClip.play(); //Play it once. showStatus("Playing sound " + onceFile + "."); } else { showStatus("Sound " + onceFile + " not loaded yet."); } return; }
//START LOOP BUTTON if (source == startLoop) { if (loopClip == null) { //Try to get the AudioClip. loopClip = soundList.getClip(loopFile); }
if (loopClip != null) { //If the sound is loaded: looping = true; loopClip.loop(); //Start the sound loop. stopLoop.setEnabled(true); //Enable stop button. startLoop.setEnabled(false); //Disable start button. showStatus("Playing sound " + loopFile + " continuously."); } else { showStatus("Sound " + loopFile + " not loaded yet."); } return; }
//STOP LOOP BUTTON if (source == stopLoop) { if (looping) { looping = false; loopClip.stop(); //Stop the sound loop. startLoop.setEnabled(true); //Enable start button. stopLoop.setEnabled(false); //Disable stop button. } showStatus("Stopped playing sound " + loopFile + "."); return; }
//RELOAD BUTTON if (source == reload) { if (looping) { //Stop the sound loop. looping = false; loopClip.stop(); startLoop.setEnabled(true); //Enable start button. stopLoop.setEnabled(false); //Disable stop button. } loopClip = null; //Reset AudioClip to null. onceClip = null; //Reset AudioClip to null. startLoadingSounds(); showStatus("Reloading all sounds."); return; } } } /* * Code is the same in both 1.0 and 1.1. */
//Loads and holds a bunch of audio files whose locations are specified //relative to a fixed base URL.
class SoundList extends java.util.Hashtable { Applet applet;
URL baseURL;
public SoundList(Applet applet, URL baseURL) { super(5); //Initialize Hashtable with capacity of 5 entries. this.applet = applet; this.baseURL = baseURL; }
public void startLoading(String relativeURL) { new SoundLoader(applet, this, baseURL, relativeURL); }
public AudioClip getClip(String relativeURL) { return (AudioClip) get(relativeURL); }
public void putClip(AudioClip clip, String relativeURL) { put(relativeURL, clip); } } /* * Code is the same in both 1.0 and 1.1. */
public void run() { AudioClip audioClip = applet.getAudioClip(baseURL, relativeURL);
//AudioClips load too fast for me! //Simulate slow loading by adding a delay of up to 10 seconds. try { sleep((int) (Math.random() * 10000)); } catch (InterruptedException e) { }