Fig. 12: Example of pausing a looping sound object
A looping sound is paused in the same way a non-looping sound is paused;
however, a special circumstance needs to be addressed. After pausing the looping
sound object and restarting it at the pause position, it will play through and
then begin over at the last pause position. The offset start position is
where the sound object was told to start, and it will continue starting at that
location until it is stopped and given a new offset position.
One way to fix this is to is to stop and restart the loop with ActionScript
once the sound object completes playing from its paused position. The
following is sample code that can be placed on a button for a looping sound object
called "myMusic":
on (press) { //Play button. //Sound is not playing and has not been paused if (playing!=true) { if (paused!=true) { playing=true; paused=false; stopped=false; myConditionText="Playing"; myMusic.start(0,999); }
//Sound has been paused if (paused==true) { playing=true; paused=false; stopped=false myMusic.start(myMusicPosition,0); myConditionText="Playing";
_root.myMusic.onSoundComplete = function() { myMusic.start(); } } } }
In the above example, if the pause button was pressed after the sound started
playing, the sound would restart at the pause position when the play button was
pressed; however, the start command does not call for a loop. Instead, the
method onSoundComplete (described in more detail later) is used to sense when
the sound has ended and restart the sound, which has the benefit of resetting
the sound objects offset position.
In addition, the following are the contents of the pause and stop buttons:
on (press) { //Pause Button if (pause!=true) { playing=false; paused=true; stopped=false myConditionText="Paused"; myMusicPosition=_root.myMusic.position/1000; _root.myMusic.stop("myMusic01"); } }