aboutsummaryrefslogtreecommitdiff
path: root/files/zh-cn/web/api/audioworkletnode
diff options
context:
space:
mode:
authorPeter Bengtsson <mail@peterbe.com>2020-12-08 14:40:17 -0500
committerPeter Bengtsson <mail@peterbe.com>2020-12-08 14:40:17 -0500
commit33058f2b292b3a581333bdfb21b8f671898c5060 (patch)
tree51c3e392513ec574331b2d3f85c394445ea803c6 /files/zh-cn/web/api/audioworkletnode
parent8b66d724f7caf0157093fb09cfec8fbd0c6ad50a (diff)
downloadtranslated-content-33058f2b292b3a581333bdfb21b8f671898c5060.tar.gz
translated-content-33058f2b292b3a581333bdfb21b8f671898c5060.tar.bz2
translated-content-33058f2b292b3a581333bdfb21b8f671898c5060.zip
initial commit
Diffstat (limited to 'files/zh-cn/web/api/audioworkletnode')
-rw-r--r--files/zh-cn/web/api/audioworkletnode/index.html103
1 files changed, 103 insertions, 0 deletions
diff --git a/files/zh-cn/web/api/audioworkletnode/index.html b/files/zh-cn/web/api/audioworkletnode/index.html
new file mode 100644
index 0000000000..19a14ef2f1
--- /dev/null
+++ b/files/zh-cn/web/api/audioworkletnode/index.html
@@ -0,0 +1,103 @@
+---
+title: AudioWorkletNode
+slug: Web/API/AudioWorkletNode
+translation_of: Web/API/AudioWorkletNode
+---
+<p>{{APIRef("Web Audio API")}} {{SeeCompatTable}}</p>
+
+<div class="blockIndicator secureContexts">虽然这个接口可以在 <a href="/en-US/docs/Web/Security/Secure_Contexts">secure contexts</a> 之外调用, 但是 {{domxref("BaseAudioContext.audioWorklet")}} 属性不行, 从而 {{domxref("AudioWorkletProcessor")}}s 不能在外部定义.</div>
+
+<p><a href="/en-US/docs/Web/API/Web_Audio_API">Web Audio API</a> 中的  <strong><code>AudioWorkletNode</code></strong>  接口代表了用户定义的{{domxref("AudioNode")}}的基类, 该基类可以与其他节点一起连接到音频路由图. 其具有关联的{{domxref("AudioWorkletProcessor")}}, 它在 Web Audio 执行实际的音频处理.</p>
+
+<h2 id="构造函数">构造函数</h2>
+
+<dl>
+ <dt>{{domxref("AudioWorkletNode.AudioWorkletNode", "AudioWorkletNode()")}}</dt>
+ <dd>为 <code>AudioWorkletNode</code> 创建一个新的实例对象.</dd>
+</dl>
+
+<h2 id="属性">属性</h2>
+
+<p><em>也继承父类的属性, {{domxref("AudioNode")}}</em>.</p>
+
+<dl>
+ <dt>{{domxref("AudioWorkletNode.port")}} {{readonlyinline}}</dt>
+ <dd>返回一个 {{domxref("MessagePort")}} 用于节点与其关联的 {{domxref("AudioWorkletProcessor")}} 间的双向通讯. 另一端在处理器属性{{domxref("AudioWorkletProcessor.port", "port")}} 下可用.</dd>
+ <dt>{{domxref("AudioWorkletNode.parameters")}} {{readonlyinline}}</dt>
+ <dd>返回一个 {{domxref("AudioParamMap")}} —  {{domxref("AudioParam")}} 对象的集合. 它们在创建 <code>AudioWorkletProcessor</code>的过程中被实例化. 如果 <code>AudioWorkletProcessor</code> 有一个静态的 {{domxref("AudioWorkletProcessor.parameterDescriptors", "parameterDescriptors")}} getter, 从其返回的 {{domxref("AudioParamDescriptor")}} 数组用于在 <code>AudioWorkletNode</code> 创建 <code>AudioParam</code> 对象. 通过这种机制,使得 <code>AudioParam</code> 对象可以从 <code>AudioWorkletNode</code> 中访问. 你可以在与其关联的 <code>AudioWorkletProcessor</code> 中使用它的值.</dd>
+</dl>
+
+<h3 id="Event_handlers">Event handlers</h3>
+
+<dl>
+ <dt>{{domxref("AudioWorkletNode.onprocessorerror")}}</dt>
+ <dd>在关联的 {{domxref("AudioWorkletProcessor")}} 对象发生异常时触发. 一旦触发,处理器及其节点将在其整个生命周期内处于输出静默状态.</dd>
+</dl>
+
+<h2 id="方法">方法</h2>
+
+<p><em>同样继承了其父类的方法, </em><em>{{domxref("AudioNode")}}</em>.</p>
+
+<p><em>AudioWorkletNode 接口未定义其自己的任何方法.</em></p>
+
+<h2 id="示例">示例</h2>
+
+<p>在本示例中我们创建了 <code>AudioWorkletNode</code> 对象, 它会输出白噪声.</p>
+
+<p>首先, 我们需要定义一个自定义的 {{domxref("AudioWorkletProcessor")}}, 它将输出白噪声并进行注册. 注意, 这需要在一个单独的文件中完成.</p>
+
+<pre class="brush: js">// white-noise-processor.js
+class WhiteNoiseProcessor extends AudioWorkletProcessor {
+ process (inputs, outputs, parameters) {
+ const output = outputs[0]
+ output.forEach(channel =&gt; {
+ for (let i = 0; i &lt; channel.length; i++) {
+ channel[i] = Math.random() * 2 - 1
+ }
+ })
+ return true
+ }
+}
+
+registerProcessor('white-noise-processor', WhiteNoiseProcessor)
+</pre>
+
+<p>接下来, 在脚本主文件中一个 <code>AudioWorkletNode</code> 实例, 并传递处理器的名称, 然后将该实例连接到一个audio graph.</p>
+
+<pre class="brush: js">const audioContext = new AudioContext()
+await audioContext.audioWorklet.addModule('white-noise-processor.js')
+const whiteNoiseNode = new AudioWorkletNode(audioContext, 'white-noise-processor')
+whiteNoiseNode.connect(audioContext.destination)
+</pre>
+
+<h2 id="规范">规范</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">Specification</th>
+ <th scope="col">Status</th>
+ <th scope="col">Comment</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('Web Audio API', '#audioworkletnode', 'AudioWorkletNode')}}</td>
+ <td>{{Spec2('Web Audio API')}}</td>
+ <td></td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="浏览器兼容性">浏览器兼容性</h2>
+
+<div>
+<div class="hidden">此页面上的兼容性表是根据结构化数据生成的。 如果您想提供数据,请查看https://github.com/mdn/browser-compat-data并向我们发送PR。</div>
+
+<p>{{Compat("api.AudioWorkletNode")}}</p>
+</div>
+
+<h2 id="See_also">See also</h2>
+
+<ul>
+ <li><a href="/en-US/docs/Web/API/Web_Audio_API">Web Audio API</a></li>
+ <li><a href="/en-US/docs/Web/API/Web_Audio_API/Using_Web_Audio_API">Using the Web Audio API</a></li>
+</ul>