gpt4 book ai didi

javascript - 如何停止同时播放 HTML5/JavaScript 音轨

转载 作者:行者123 更新时间:2023-12-03 02:10:02 27 4
gpt4 key购买 nike

我有一个循环内的音轨(每当有人发布新轨道时),因此多个音轨将被放置在页面上。这是输出到页面上的 html:

<html>
<div class='wrap'>

<audio id='music' preload='true'>
<source src='$file' type='audio/mpeg'>
</audio>

<div class='player paused'>

<div class='progress-bar'>
<div class='runner'></div>
</div>

<div class='description'>
<div class='title'>Something from nothing</div>
<div class='sub-title'>by $username</div>
</div>

<div class='visualizer'>
<div></div><div></div><div></div><div>
</div><div></div><div></div><div></div> <div></div><div></div>
<div></div><div></div><div></div><div>
</div><div></div><div></div><div></div><div></div><div></div>
<div></div><div></div><div></div><div>
</div><div></div><div></div><div></div><div></div><div></div>
<div></div><div></div><div></div><div>
</div><div></div><div></div><div></div><div></div><div></div><div></div>
<div></div><div></div><div></div><div>
</div><div></div><div></div><div></div><div></div><div></div><div></div>
</div>

<div class='play-button'>
div class='lp-background'></div>
<i class='fas fa-play' id='playpress></i>
</div>

<div class='time-indicator'>
<i class='fas fa-clock'></i>
<span class='time'>03:39</span>
</div>

</div>
</div>
</div>
</html>

所有这些 div 都用于动画栏,这是我的 JavaScript:

var $visualizers = $('.visualizer>div');
var $progressBar = $('.progress-bar');
var $progressBarRunner = $progressBar.find('.runner');
var songLength = 219; //in seconds
var percentage = 0
var $time = $('.time');
var $player = $('.player');

var playRunner = null;

function go() {
playRunner = setInterval(function() {
//visualizers
$visualizers.each(function() {
$(this).css('height', Math.random() * 90 + 10 + '%');
});
//progress bar
percentage += 0.15;
if (percentage > 100) percentage = 0;
$progressBarRunner.css('width', percentage + '%');

$time.text(calculateTime(songLength, percentage));
}, 250);
};

$('.play-button').on('click', function() {
$player.toggleClass('paused').toggleClass('playing');
if (playRunner) {
clearInterval(playRunner);
playRunner = null;
$time.text(calculateTime(songLength, 100));
} else {
percentage = 0;
go();
}
});

$('.progress-bar').on('click', function(e) {
var posY = $(this).offset().left;
var clickY = e.pageX - posY;
var width = $(this).width();

percentage = clickY / width * 100;
});

function calculateTime(songLength, percentage) {
//time
var currentLength = songLength / 100 * percentage;
var minutes = Math.floor(currentLength / 60);
var seconds = Math.floor(currentLength - (minutes * 60));
if (seconds <= 9) {
return (minutes + ':0' + seconds);
} else {
return (minutes + ':' + seconds);
}
}

clearInterval(playRunner);

我的问题是,当我按下其中一首轨道上的播放按钮时,它们都会同时开始播放。我想让它在单击时一次只播放一首轨道。我不确定我是否可以在 html 或 javascript 文件中更改它,或者我是否只是以不同的方式进行处理。

最佳答案

在 HTML 中 id 属性应该是唯一的。尝试删除 id='music'。

关于javascript - 如何停止同时播放 HTML5/JavaScript 音轨,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49618676/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com