在 wasm-bindgen 中扩展 AudioWorkletProcessor?
Extend AudioWorkletProcessor in wasm-bindgen?
有关如何使用 wasm-bindgen 在 rust -> wasm
流程中使用现有 javascript 网络系统的文档非常简单。简而言之:
- 将需要的功能列为依赖项
// cargo.toml
[dependencies.web-sys]
version = "0.3.4"
features = [
'AudioContext',
'OscillatorNode'
]
- 通过 web_sys 访问,并从那里正常对待它们。
// lib.rs
#[wasm_bindgen]
impl FmOsc {
#[wasm_bindgen(constructor)]
pub fn new() -> Result<FmOsc, JsValue> {
let ctx = web_sys::AudioContext::new()?;
let primary = ctx.create_oscillator()?;
let fm_osc = ctx.create_oscillator()?;
Link 到 full example
虽然这种方法适用于大多数 Web 系统,但对于需要扩展 class 的系统来说就没那么简单了。在这种情况下,我尝试使用 AudioWorkletProccessor from wasm-bindgen
在标准用法中,您应该扩展 AudioWorkletProcessor
class,然后注册它。 MDN Example
我该如何解决这个问题?首先,我需要在 Rust 中扩展 AudioWorkletProcessor
(它不执行正常的 classes 和继承),覆盖其 process()
函数。然后我需要确保 registerProcessor()
被注入我的铁锈 space.
有关如何使用 wasm-bindgen 在 rust -> wasm
流程中使用现有 javascript 网络系统的文档非常简单。简而言之:
- 将需要的功能列为依赖项
// cargo.toml
[dependencies.web-sys]
version = "0.3.4"
features = [
'AudioContext',
'OscillatorNode'
]
- 通过 web_sys 访问,并从那里正常对待它们。
// lib.rs
#[wasm_bindgen]
impl FmOsc {
#[wasm_bindgen(constructor)]
pub fn new() -> Result<FmOsc, JsValue> {
let ctx = web_sys::AudioContext::new()?;
let primary = ctx.create_oscillator()?;
let fm_osc = ctx.create_oscillator()?;
Link 到 full example
虽然这种方法适用于大多数 Web 系统,但对于需要扩展 class 的系统来说就没那么简单了。在这种情况下,我尝试使用 AudioWorkletProccessor from wasm-bindgen
在标准用法中,您应该扩展 AudioWorkletProcessor
class,然后注册它。 MDN Example
我该如何解决这个问题?首先,我需要在 Rust 中扩展 AudioWorkletProcessor
(它不执行正常的 classes 和继承),覆盖其 process()
函数。然后我需要确保 registerProcessor()
被注入我的铁锈 space.