且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

动态创建多个具有唯一名称的 wavesurfer 对象

更新时间:2022-12-20 19:08:24

经过反复试验,我破解了它.

你需要设置一个对象数组:

var wavesurfer = [];

然后在渲染函数中创建每个实例时将每个单独的 id 传递给它:

function render(id, selector, peaks, url) {var domEl = document.createElement('div');domEl.setAttribute("id", "t-"+id);document.querySelector(selector).appendChild(domEl);trackid = "t"+id;wavesurfer[trackid] = WaveSurfer.create({容器:domEl,条宽:3,waveColor: '#CCC',progressColor: '白色',后端:'媒体元素',媒体类型:'音频',身高:80,cursorColor: '白色',响应:真实,隐藏滚动条:真});//确保以相同的方式引用每个方法...wavesurfer[trackid].drawBuffer();wavesurfer[trackid].load(url, peaks, false);//false 阻止预加载音频文件返回 wavesurfer[trackid];}

调用渲染函数:

render(1, ".tk1", [....], 'http://example.com/file.mp3');

然后你可以使用对象标识符来定位每个玩家,在这个例子中传递给函数的id是1:

wavesurfer[t1].playPause();

所以用例可能是:

<button type="button" onClick="wavesurfer['t1'].playPause();">PLAY</button><脚本>渲染(1, ".tk1", [-0.39,0.4,-0.9,0.91,-0.32,0.34,-0.95,0.98,-0.54,0.74,-0.9,0.91,-0.33,0.37,-0.96,0.98,--0.9,0.91,-0.79,0.76,-0.95,0.95,-0.88,0.87,-0.91,0.94,-0.55,0.6,-0.97,0.96,-0.43,0.43,-0.91,0.5,10,-0.91,0.5,10,--0.98,0.94,-0.55,0.76,-0.91,0.91,-0.33,0.37,-0.98,0.98,-0.39,0.41,-0.92,0.91,-0.31,0.34], 'http://example.com/文件.mp3');

<div class="tk2"><button type="button" onClick="wavesurfer['t2'].playPause();">PLAY</button><脚本>渲染(2, ".tk2", [-0.39,0.4,-0.9,0.91,-0.32,0.34,-0.95,0.98,-0.54,0.74,-0.9,0.91,-0.33,0.37,-0.96,0.98,-0.96,0.98,--0.9,0.91,-0.79,0.76,-0.95,0.95,-0.88,0.87,-0.91,0.94,-0.55,0.6,-0.97,0.96,-0.43,0.43,-0.91,0.5,10,-0.91,0.5,10,--0.98,0.94,-0.55,0.76,-0.91,0.91,-0.33,0.37,-0.98,0.98,-0.39,0.41,-0.92,0.91,-0.31,0.34], 'http://example.com/file2.mp3');