(先别急着关窗口,我的问题和这个库的细节无关)
我现在想用这个库: https://github.com/goldfire/howler.js ,去得到 AudioContext (在这个 github 页面上搜索“ ctx ”即可找到相应内容)
网上搜到的用法是“ Howler.ctx ”,然而我连样例都跑不通,“ Howler.ctx ”是 null
MCVE 如下:
<html>
<body>
<script src="js/howler.min.js"></script>
<script>
var context = Howler.ctx;
console.log(context); // console 中输出“ null ”
</script>
</body>
</html>
已知上面的网页中, js 路径,引用的 js 内容均正确。firefox chrome都试了
到底哪儿出问题了呢?
1
starvedcat OP 在 webstorm 里,输入“ Howler.”,弹出的联想菜单里,是有 ctx 的……(这证明引用的 js 路径、内容都没问题)
|
2
sun1991 2016-11-13 10:49:31 +08:00 via Android 1
改个名,不要用 context 做变量名
|
3
starvedcat OP @sun1991 谢谢,我改成“ fffff ”了,还是输出 null
|
4
starvedcat OP 关键是, google 搜索“ Howler.ctx null ”,啥也没有啊!!!
|
5
smallpath 2016-11-13 10:57:51 +08:00 1
万一这玩意就是 null 呢, 先把 Holwer 的成员全部打印出来吧
|
6
Biwood 2016-11-13 11:18:51 +08:00 1
Howler.ctx 只是一个配置项,而不是 API ,你需要给这个项赋值,值的类型是 Boolean ,也就是说当给 Howler.ctx 赋值 true 的时候才能暴露 AudioContext 接口。打印出来的 null 是这一项的默认值,所以默认不暴露 AudioContext 接口。
|
7
starvedcat OP @Biwood 但是网上找到的代码片段都是:
···· var context = Howler.ctx; var oscillator = context.createOscillator(); ···· 直接就把 Howler.ctx 给用上了啊。。 |
8
starvedcat OP @Biwood 想请教一下,如果按你说的, 先 Howler.ctx = true;,然后该怎么操作?
|
9
Biwood 2016-11-13 11:44:25 +08:00 1
@starvedcat 我只是根据文档来理解的: https://github.com/goldfire/howler.js#ctx-boolean-web-audio-only ,不过按照你给的代码片段,似乎跟我的理解有冲突,这个 ctx 看起来像是需要手动赋值,但是根据源代码,如果没有手动赋值应该会有其他处理的: https://github.com/goldfire/howler.js/blob/1f7f411171439f52aad8e5edf1aa9e9a743814da/dist/howler.js#L67-L69 ,这里的 setupAudioContext 函数找不到定义的地方,你可以通过源代码继续研究一下
|
10
oott123 2016-11-13 12:09:30 +08:00 1
看了一下源码,你至少需要先 init 一个 Howl 对象,才能取到 ctx 。
console.log(Howler.ctx) // null new Howl(src: ['sound.mp3']).init() console.log(Howler.ctx) // AudioContext |
11
oott123 2016-11-13 12:11:10 +08:00
这个设计应该是方便你自己传入一个 AudioContext 。
btw ,你问的问题就是这个库的细节,不知道你为啥觉得和这个库的细节无关。 |