2017-01-13 7 views
0

Я стараюсь работать в Ionic1 и есть проблема confussing здесь:Ионные играют средства массовой информации после того, как остановить

Я хочу играть средства массовой информации (mp3, например) Direkt после другой остановился. Speaking: У вас есть список песен. Если один работает - нажмите другое один - то остановить текущий и начать новый ...

Но я что-то пропустил ... Вот код:

Заранее спасибо за любые подсказки.

! звук - это просто объект с заголовком, url и sta для статуса. !

var currentSound, currentMedia; 
    $scope.play = function(sound) { 

    if(currentMedia && currentSound && currentSound.sta == 1){ 
     currentMedia.stop(); 
     currentSound.sta = 0; 

     if(sound.title === currentSound.title) return; 
    } 

    var mediaUrl = sound.url; 
    if(device.platform.indexOf("iOS") >= 0) { 
     mediaUrl = "../Library/NoCloud/" + mediaUrl.split("/").pop(); 
    } 

    currentSound = sound; 
    currentMedia = new Media(mediaUrl, 
     function() { 
      currentMedia.release(); 
      currentSound.sta = 0; 
     }, function(err) { 
      console.log("media err", err); 
     }, function (sta) { 
      if(sta == Media.MEDIA_RUNNING) 
      { 
      currentSound.sta = 1; 
      } 
      else 
      { 
      currentSound.sta = 0; 
      } 
     }); 

    currentMedia.play(); 
    currentSound.sta = 1; 

    } 

ответ

0

OK - Я нашел решение ... даже если я его не понимаю. (Я открыт для вашей мудрости)

Решение: просто вызовите функцию рекурсивно в случае остановки & запустите носитель.

var currentSound, currentMedia; $ scope.play = функция (звук) {

if(currentMedia && currentSound && currentSound.sta == 1){ 
    currentMedia.stop(); 
    currentSound.sta = 0; 

    if(sound.title === currentSound.title) 
    { 
    return; 
    } 
    else 
    { 
    $scope.play(sound); 
    } 
} 

var mediaUrl = sound.url; 
if(device.platform.indexOf("iOS") >= 0) { 
    mediaUrl = "../Library/NoCloud/" + mediaUrl.split("/").pop(); 
} 

currentSound = sound; 
currentMedia = new Media(mediaUrl, 
    function() { 
     currentMedia.release(); 
     currentSound.sta = 0; 

    }, function(err) { 
     console.log("media err", err); 

    }, function (sta) { 

     if(sta == Media.MEDIA_RUNNING) 
     { 
     currentSound.sta = 1; 
     } 
     else 
     { 
     currentSound.sta = 0; 
     } 
    }); 

currentMedia.play(); 
currentSound.sta = 1; 

}