AngularJs音频
问题描述:
如何确认音频以角度js结束?我附上我的代码。任何人都可以帮助我。AngularJs音频
app.controller("myCtrl",function($scope,ngAudio,$document)
{
$scope.src="aud.mp3";
$scope.play=false;
$scope.play=function()
{
$scope.audio = ngAudio.load('aud.mp3');
$scope.audio.play();
}
$scope.stop=function()
{
$scope.audio = ngAudio.load('aud.mp3');
$scope.audio.pause();
}
$document[0].addEventListener("visibilitychange", function() {
var doucmentHidden = document.hidden;
if (doucmentHidden)
$scope.audio.pause();
else
$scope.audio.play();
}, false);
});
答
做了一些研究之后,我没有找到一个倾听者,它可以告诉你的Aduio结束的时候,但我发现两个属性,可以给你一些有用的状态:
$scope.audio.paused
或
$scope.audio.canPlay
它们都返回布尔值,所以你需要做的,是这样定义一个函数:
function listen(audio, callBack) {
if(audio.paused) {
callBack();
} else {
setTimeout(listen);
}
}
具有这种功能的问题是,你需要每次调用它调用.play()
方法
$scope.audio.play();
listen($scope.audio, function() {
console.log("ended !!");
});
请注意,这不是一个很好的解决方案,很好的解决方案之一是使用原生Audio
构造:
$scope.audio = new Audio("aud.mp3");
$scope.audio.onended = function() {
console.log("ended !! ");
}
$scope.audio.play();
答
不容易听式的事件,除非您编辑自己的模块,我不得不编辑模块,让事件侦听器angular.audio.js Line 240
cleverAudioFindingService.find(id)
.then(function(nativeAudio) {
audio = nativeAudio;
audio.addEventListener('canplay', function() {
audioObject.canPlay = true;
});
/*-----*/
audio.addEventListener('ended',function(){
alert('ended');
});
/*-----*/
}, function(error) {
audioObject.error = true;
console.warn(error);
});
因为这不是一个很好的做法,我交替使用this angular-player