如何在howler.js中使用变量播放多个音频?
问题分析与解决方法
你的写法存在错误,和howler.js本身无关。
为什么原有简化代码失败?
你写的var sound = ["sound" + i]只是创建了一个包含字符串(比如"sound0")的数组,这个字符串和你之前定义的sound1、sound2这些Howl实例没有任何关联,自然调用不了play()方法。
正确的简化方式
首先把所有音频实例统一存到一个数组里,代替单独的变量:
// 用数组存储所有Howl实例 var sounds = [ new Howl({src: ['sound01.mp3']}), new Howl({src: ['sound02.mp3']}), new Howl({src: ['sound03.mp3']}) ];
然后在点击事件里,直接通过索引从数组中取出对应的实例并播放:
$musicbox.on('click', function(){ var i = $(this).index(); sounds[i].play(); });
补充:如果非要用变量名匹配(不推荐)
如果你坚持想用"sound"+i的方式获取之前的变量,只能在全局作用域下通过window["sound" + (i+1)]来取(注意你的元素索引从0开始,而变量名是sound1对应第一个元素,所以要+1),但这种写法不够规范,代码维护性差,还是推荐用数组的方式。
内容的提问来源于stack exchange,提问作者Mangoo
相关产品推荐
相关产品推荐

