/* * Copyright (c) 1995-1997 Sun Microsystems, Inc. All Rights Reserved. * * Permission to use, copy, modify, and distribute this software * and its documentation for NON-COMMERCIAL purposes and without * fee is hereby granted provided that this copyright notice * appears in all copies. Please refer to the file "copyright.html" * for further important copyright and licensing information. * * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF * THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED * TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A * PARTICULAR PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. */ import java.applet.*; import java.awt.*; public class SoundExample extends Applet { SoundList soundList; String onceFile = "bark.au"; String loopFile = "train.au"; AudioClip onceClip; AudioClip loopClip; Button playOnce; Button startLoop; Button stopLoop; Button reload; boolean looping = false; public void init() { playOnce = new Button("Bark!"); add(playOnce); startLoop = new Button("Start sound loop"); stopLoop = new Button("Stop sound loop"); stopLoop.disable(); add(startLoop); add(stopLoop); reload = new Button("Reload sounds"); add(reload); validate(); startLoadingSounds(); } void startLoadingSounds() { //Start asynchronous sound loading. soundList = new SoundList(this, getCodeBase()); soundList.startLoading(loopFile); soundList.startLoading(onceFile); } public void stop() { //If one-time sound were long, we'd stop it here, too. if (looping) { loopClip.stop(); //Stop the sound loop. } } public void start() { if (looping) { loopClip.loop(); //Restart the sound loop. } } public boolean action(Event event, Object arg) { //PLAY BUTTON if (event.target == 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 true; } //START LOOP BUTTON if (event.target == 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.enable(); //Enable stop button. startLoop.disable(); //Disable start button. showStatus("Playing sound " + loopFile + " continuously."); } else { showStatus("Sound " + loopFile + " not loaded yet."); } return true; } //STOP LOOP BUTTON if (event.target == stopLoop) { if (looping) { looping = false; loopClip.stop(); //Stop the sound loop. startLoop.enable(); //Enable start button. stopLoop.disable(); //Disable stop button. } showStatus("Stopped playing sound " + loopFile + "."); return true; } //RELOAD BUTTON if (event.target == reload) { if (looping) { //Stop the sound loop. looping = false; loopClip.stop(); startLoop.enable(); //Enable start button. stopLoop.disable(); //Disable stop button. } loopClip = null; //Reset AudioClip to null. onceClip = null; //Reset AudioClip to null. startLoadingSounds(); showStatus("Reloading all sounds."); return true; } return false; //some event I don't know about... } }