
Код AS3:
var cond:Boolean = false;
var snd:Sound = new hallelujahMp3();
var channel:SoundChannel;
addEventListener (MouseEvent.CLICK, playMusic);
/// строка ниже, это подписка на окончание загрузки звукового файла, а не об окончании проигрывания.
// snd.addEventListener(Event.SOUND_COMPLETE, onComplete);
function playMusic (еvent:MouseEvent){
if (cond) {
channel.stop ();
channel.removeEventListener (Event.SOUND_COMPLETE, onSoundComplete);
channel = null;
} else {
channel = snd.play ();
/// а вот это подписка на конец проигрывания
channel.addEventListener (Event.SOUND_COMPLETE, onSoundComplete);
}
/// любой вызов инвертирует состояние cond, поэтому можно не указывать это явно: cond = true или cond = false
cond = !cond;
}
function onSoundComplete (event:Event) {
cond = false;
channel.removeEventListener (Event.SOUND_COMPLETE, onSoundComplete);
channel = null;
}