我创造了一个简单的音乐播放器。
按预期播放,暂停和停止所有工作。
但是,我无法弄清楚如何使函数在文件之间向前或向后跳过。
JS:
这是小部件其余部分的支持代码。
var songs = ["violin", "stronger", "boom"]
var songIndex = 1;
var currentSong = new Audio("music/" + songs[songIndex] + ".mp3")
$scope.playStatus = true;
这只是简单地切换游戏与暂停:
$scope.playPause = function() {
if (!$scope.playStatus) currentSong.pause();
else currentSong.play();
$scope.playStatus = !$scope.playStatus;
}
这会完全停止歌曲并将其返回到开头:
$scope.stopSong = function() {
currentSong.pause();
currentSong.currentTime = 0;
$scope.playStatus = true;
}
这是我尝试创建“上一首歌”功能的地方:
$scope.previousSong = function() {
currentSong.pause()
if (songIndex === 0) {
songIndex = songs.length;
} else {
songIndex -= 1;
}
currentSong.play()
$scope.playStatus = true;
}
最后一个函数是我期望最简单的逻辑。
暂停歌曲,向后移动歌曲阵列中的一个索引,然后播放。然而,它只是继续播放同一首歌。没有错误。
答案 0 :(得分:2)
这是因为你没有加载正确的mp3。尝试像
这样的东西 $scope.previousSong = function() {
currentSong.pause()
if (songIndex === 0) {
songIndex = songs.length - 1;
} else {
songIndex -= 1;
}
currentSong = new Audio("music/" + songs[songIndex] + ".mp3"); // reload the new song
currentSong.play();
$scope.playStatus = true;
}
答案 1 :(得分:1)
我在您的代码中发现了两个错误:
var songIndex = 1
应为var songIndex = 0
(您想从头开始)songIndex = songs.length;
应为songIndex = songs.length - 1;
(索引等于数组的长度超出界限)