Wednesday 9 April 2008

Sound in flash cs3 part 2 - pause

Ok, starting off with an example, heres an example where it loops infinitely and you are able to pause and resume it.




The code hasn't changed much but there are some subtle differences that have a lot of effect on the outcome.

When the pause button is pressed a new variable is set which tells the play button where to replay the sound from. Lets look at the code.



import flash.media.Sound;
var sound:Sound = new acoust();
var channel:SoundChannel;
var soundisplaying:Boolean = false;
var pausePosition:int = 0
playbut.addEventListener(MouseEvent.CLICK, playsound);
stopbut.addEventListener(MouseEvent.CLICK, stopsound);
function playsound(event:Event):void {
if (soundisplaying==false) {
channel = sound.play(pausePosition);
soundisplaying = true;
channel.addEventListener(Event.SOUND_COMPLETE, soundComplete);
}
}
function stopsound(event:Event):void {
pausePosition = channel.position;
channel.stop();
soundisplaying =false;
}
function soundComplete(event:Event):void {
channel = sound.play();
channel.addEventListener(Event.SOUND_COMPLETE, soundComplete);
}


Ok, the new pause position variable is the first new thing, it is set at 0 when the movie starts, this is the start of the sound.

The next change is within the soundplay function. Where instead of the channel = sound.play(0, 99) with channel.play(pausePosition), so to recap, this is to play the sound from pauseposition, which i set earlier.

Next i add the event listener for when the sound finishes, so i can loop it. ( i can't loop it the way i did last time as this interferes with the pause function)

The next change is the most important one, where i update the pausePosition when the stopbut button is pressed. This sets the place from which you can resume the play back when you press play.

The last thing i changed was to make a function which loops the music, it literally checks to see if the sound has finished and then replays the sound if it is.

Ok thats the basic sound tutorials over.


4 comments:

Anonymous said...

Fantastic !!

Any chance you could provide code to:

1. load an 'external' .mp3
2. play button code
3. your (awesome) pause button code
4. stop button code

all in one code chunk?

Loads of people are searching for the above to create simple, 3 button audio/image pieces in Flash.

Many Mahalos

bill - hawaii

tudway said...

I have been moving over to a new site lately www.tudway-experimental.com so i will write a tutorial there for you. Post a comment on one of the tutorials there so i know you are reading them. Also i have done some experiments involving loading an external sound. If you click on the experiments tab on my new site you should see some interesting stuff.

Anonymous said...

Thanks a lot... My flash presentation is doing so good with your help... ^_^

Anonymous said...

what code would i use to automatically play when the site is opened and still have these buttons work?

this is amazing, by the way. :)