我尝试在Ionic1工作并在这里遇到一个令人困惑的问题:
我想在另一个媒体停止之后播放媒体(例如mp3)。 说到:有歌曲列表。如果正在运行 - 单击另一个 - 然后停止当前并启动新的...
但是我错过了一些东西...... 这是代码:
提前感谢任何提示。
!声音只是一个带有title,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 :(得分:0)
好的 - 我找到了一个解决方案......即使我不理解它。 (我对你的智慧持开放态度)
解决方案:在停止和启动媒体的情况下,只需递归调用该函数。
var currentSound,currentMedia; $ scope.play = function(sound){
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;
}