Кнопка паузы AS3 не воспроизводит приостановленную песню из массива

У меня есть флэш-mp3-плеер с кнопкой воспроизведения, паузы и перехода на один кадр.
Песни хранятся в массиве.

Все отлично работает, кроме кнопки паузы. Это ставит музыку на паузу
и сохраните положение песни в переменной. Когда я нажимаю на паузу
Снова нажмите кнопку для воспроизведения песни с сохраненной позиции
что это делает. Проблема в том, что он также воспроизводит первую песню в массиве. Не
песня, которая была приостановлена. Я пытался найти решение в Google. Но
темы, которые я мог найти где о mp3-плеерах, которые играли только одну песню.
Вот код Благодарю.

var i:Number = 0;
var myMusic:Sound = new Sound();
var mySongs:Array = ["Kalimba.mp3","Sleep Away.mp3","Maid with the Flaxen Hair.mp3"];
var soundFile:URLRequest = new URLRequest(mySongs[i++]);
var channel:SoundChannel = new SoundChannel();
var sTransform:SoundTransform = new SoundTransform();
var songPosition:Number;
var myContext:SoundLoaderContext = new SoundLoaderContext(5000);
myMusic.load(soundFile, myContext);

btnPlay.addEventListener(MouseEvent.CLICK, playMusic);
btnNext.addEventListener(MouseEvent.CLICK, nextMusic);
btnPause.addEventListener(MouseEvent.CLICK, pauseMusic);
channel.addEventListener(Event.SOUND_COMPLETE, nextMusic);

function playMusic(evt:MouseEvent):void
{
   channel = myMusic.play(songPosition);
   channel.addEventListener(Event.SOUND_COMPLETE, nextMusic);
}

function nextMusic(evt:Event):void
{
    channel.stop();
    var myMusic:Sound = new Sound();
    var mySongs:Array = ["Kalimba.mp3","Sleep Away.mp3","Maid with the Flaxen Hair.mp3"];
    var soundFile:URLRequest = new URLRequest(mySongs[i]);
    myMusic.load(soundFile, myContext);
    channel = myMusic.play(i);
    channel.addEventListener(Event.SOUND_COMPLETE, nextMusic);
    if(i==mySongs.length-1) {
    i=0;
    }
    else {
        i++;
    }
}

var Paused:Boolean = false;

function pauseMusic(evt:MouseEvent):void
{
    if(Paused==false) {
    songPosition = channel.position;
    channel.stop();
    Paused = true;
    }
    else if(Paused==true) {
        channel = myMusic.play(songPosition);
        Paused = false;
    }
}

1 ответ

Вы не должны продолжать добавлять channel.addEventListener (Event.SOUND_COMPLETE, nextMusic);

Beacuse События SOUND_COMPLETE запускаются, когда вы останавливаетесь.

Добавление этого EventListener только один раз должно быть достаточно в любом случае.

Другие вопросы по тегам