Javascript AngularJs音频
当音频结束时,我如何确认?我已附上我的代码。任何人都可以帮助我Javascript AngularJs音频,javascript,angularjs,html,Javascript,Angularjs,Html,当音频结束时,我如何确认?我已附上我的代码。任何人都可以帮助我 app.controller("myCtrl",function($scope,ngAudio,$document) { $scope.src="aud.mp3"; $scope.play=false; $scope.play=function() { $scope.audio = ngAudio.load('aud.mp3');
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
或
它们都返回布尔值,所以您需要做的是定义如下函数:
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);
});
由于这不是一个好的做法,我选择
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);
});