我是一名业余编码员,我试图让某些事情发挥作用,但我有点陷入困境。 希望有人能帮助我。
对于初学者,我使用wavesurfer播放可以正常工作的音频。 我发起了多个waveurfer实例,除了一个hickup之外它们都很好。 当我在实例1正在播放时从实例2播放音频时,它的音频重叠,我不知道如何暂停实例1。
我尝试了几件事,但结果却没有任何结果或破坏了浪潮。
这就是我目前正在启动waveurfer的方式:
//getplayer
function getplayer(location)
{
var wavesurfer = WaveSurfer.create({
container: '#waveform',
waveColor: 'white',
progressColor: 'cyan',
});
if (wavesurfer.isPlaying())
{
wavesurfer.pause();
wavesurfer.load(location);
wavesurfer.on('ready', function () {
wavesurfer.play();
});
}
else {
wavesurfer.load(location);
wavesurfer.on('ready', function () {
wavesurfer.play();
});
}
}
要将位置传递给函数,我使用ajax:
<script>
$(function() {
$('.playsong-".$i."').click(function(event) {
event.preventDefault();
$.ajax({
type: 'GET',
url: 'includes/ajax.php',
dataType :'html',
data : {songname : '" . $psong['sname'] . "', songpath : '" . $psong['sl'] . "'},
success : function(data){
$('#waveform').html(data);
}
})
});
});
</script>
然后传递给ajax.php文件并启动javascript:
<script>getplayer("<?= $location ?>")</script>
我相信每次我打电话给waveurfer时,我都会启动播放器的新实例,但我可能错了......
感谢您的帮助!
答案 0 :(得分:0)
我确实调用了整个玩家的几个实例,而不是仅仅将信息传递给玩家。
我所做的是完全删除ajax调用。
然后我在歌曲按钮上添加了一个onclick处理程序,如下所示:
public function profilesongview($currentuser) {
$this->getmusic($currentuser);
$i = 1;
foreach ($this->musicarray as $psong) {
echo "<div class='col-md-12'>
<a href='#' class='playsong-" . $i . "' onclick=getplayer('".$psong['sl']."')><div class='profile_song'>
" . $psong['sname'] . "
</div></a></div>";
$i++;
}
}
然后我将玩家的实例添加到网站的静态部分等等,全部完成了!