Flash for the masses – AS, JSFL, XUL, etc.

2009/01/06

Loading and playing audio (as a class method).

Filed under: AS3.0 — delfeld @ 5:02 pm
Tags: , , , , ,

This is the entirety of loading an audio file, set up for use in a class.

Can be used to play an MP3 or any other acceptable audio format.

Usage:

loadAudio(“someSubDirectory/filename”, {Boolean});

import flash.media.Sound;
import flash.media.SoundChannel;
import flash.net.URLRequest;
import flash.events.IOErrorEvent;

// This audioRootDir is a local file, but can be any URL that the Flash Player has access to.
private var audioRootDir:String = "file:///drive:/folder/";

private var hasAudio:Boolean;
private var audioChannel:SoundChannel;
private var sndStream:URLRequest;
private var audio:Sound;

public function loadAudio(audioFile:String = "", loopAudio:Boolean = true):void
		{
			try
			{
				if (audioFile !== "")
				{
					// setup file and sound
					sndStream = new URLRequest(audioRootDir + audioFile);
					audio = new Sound();
					audio.addEventListener(IOErrorEvent.IO_ERROR, audioLoadErrorHandler, false, 0, true);

					//use this for events to run when audio is fully loaded:
					// audio.addEventListener(Event.COMPLETE, audioLoadedHandler, false, 0, true);

					// load the audio file
					audio.load(sndStream);

					// Set to loop 1000 times, which avoids the need to add a listener for Event.SOUND_COMPLETE events;
					// if there is a need for perpetual looping, however, use the event (not shown here).
					// Start audio
					// and loop the audio, if required.
					audioChannel= audio.play(0, (loopAudio ? 1000 : 0));					

					hasAudio = true;
				}
				else
				{
					hasAudio = false;
				}
			}
			catch (err:Error)
			{
				hasAudio = false;
				trace("Error: loadAudio: err msg: " + err + "\n" + err.getStackTrace() );
			}
			finally { }
		}

		private function audioLoadErrorHandler(e:IOErrorEvent):void
		{
			trace("Error: audioLoadErrorHandler: err msg: " + e + "\n" + e.toString());
		}

Blog at WordPress.com.