Кнопка паузы 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 только один раз должно быть достаточно в любом случае.