首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用WebAudio API,轮询是观察AudioParam值更改的唯一方法吗?

使用WebAudio API,轮询是观察AudioParam值更改的唯一方法吗?
EN

Stack Overflow用户
提问于 2014-08-03 15:46:08
回答 1查看 129关注 0票数 2

我是否正确地认为我们只能轮询AudioParams来观察其价值的变化?

AudioParam是作为AudioNode的属性创建的,例如:

代码语言:javascript
运行
复制
var gainNode = audioContext.createGain();
var param = gainNode.gain;

param是一个具有一系列控制节点增益的方法和属性的对象。要观察变化,我们需要观察param的“value”属性。

问题是Object.observe无声地失败了:

代码语言:javascript
运行
复制
Object.observe(param, function(changes){
    console.log(changes);
});

在这里,回调从未被调用过。

您还可以将“value”属性重新配置为getter/setter,并在设置值时调用观察代码--但这也会失败。属性是可配置的,您可以在其上设置一个值,但是音频节点似乎不使用getter来获取值,因此它不使用我们设置的值。因此,我认为它应该是不可配置的。

我可以理解为什么这些方法是不可取的-- AudioParam值可以以采样速率更新,因此这些观察者可能每秒被调用数千次。

因此,问题是,我们是通过轮询来观察AudioParam对象的值的变化(尽管是在requestAnimationFrame上,但仍然是轮询),还是有更好的方法?

(几天前,我在公共音频邮件列表上问了这个问题:http://lists.w3.org/Archives/Public/public-audio/2014JulSep/0054.html。到目前为止没有答复。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-04 17:33:24

我们不知道如何做到这一点,因为这会对业绩产生严重影响。同时,我建议您重新实现一个AudioParam包装器,它可以在主线程上为您提供值。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25106330

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档