FadeSound AS3 – A class which fades sounds in and out automatically
Recently I was working on a project that required me to fade a sound in and out dynamically. Here is the result:
FadeSound (clever name, huh?) is an AS3 class that extends Flashs built in Sound class and includes fading in and fading out (including auto-fade out on sound completion).
Here is the source: http://blog.organa.ca/flashContent/fadeSound/SoundFader_Organa.zip
You can probably just dive in and figure it out based on the examples, but I’ll do a write-up after the break.
Methods
playWithFadeIn
This method will start playing your sound, the sound will fade in at the beginning for the length of time specified in the argument.
Parameters
startTime:Number Set the start time in miliseconds (same as the Sound class)
sndTransform:SoundTransform The initial SoundTransform object assigned to the sound channel. (same as the Sound class)
setFadeInDurationInSeconds:Number Set the amount of time the initial fade in will take. In seconds, so 2.2 will specify a 2.2 second fade in when your sound starts playing.
setAutoFadeOut:Number Set the length of the fade out at the end of the sound. This will automatically start a fade out at the end of the sound.
setEaseType:Function = null Assign an easing function to the fade in. fl.motion.easing.Linear .Sine etc.
stopWithFadeOut
This method allows you to manually fade out and stop your sound at any point.
Parameters
setFadeOutDurationInSeconds:Number The time in seconds it will take your sound to fade out.
setEaseType:Function Assign an easing function to the fade out. fl.motion.easing.Linear com.gskinner.motion.easing.Sine etc.
Properties
soundVolume (Number)
Set the volume of the currently playing sound. This is a number between 0 and 1
autoFadeOut (Number)
Set the length of the fade out at the end of the sound. This will automatically start a fade out at the end of the sound. Setting this to 0 will give the sound a hard stop at the end.
Events
Included with the class is the FadeSoundEvent.as class. This is just a container for the three events dispatched by FadeSound.as.
SOUND_FADE_IN_COMPLETE:String Dispatched when the sound has faded in completely.
SOUND_FADE_OUT_COMPLETE:String Dispatched when the sound has faded out completely.
SOUND_FADE_OUT_STARTED:String Dispatched when the sound has started to fade out.
Example
import ca.organa.sound.FadeSound; import ca.organa.events.FadeSoundEvent; import fl.motion.easing.Sine; // var soundRequest:URLRequest = new URLRequest("MP3/dust_lane.mp3"); // var fadeSound:FadeSound = new FadeSound(); fadeSound.addEventListener(Event.COMPLETE, onMP3Loaded); fadeSound.load(soundRequest); // function onMP3Loaded(e:Event):void { fadeSound.removeEventListener(Event.COMPLETE, onMP3Loaded); fadeSound.playWithFadeIn(1, null, 3, 2, Sine.easeOut); }
This is a pretty simple example. All I’m doing is creating an instance of the FadeSound class and loading the external MP3 file.
When the file has loaded successfully I call the the playWithFadeInFunction specifying a 3 second fade in, a 2 second automatic fade out at the end and I point to the Sine.easeOut function for my easing.
That’s pretty much it folks. If you have any problems with the class or have any ideas for additional features please leave me a note in the comments and hopefully I’ll get back to you