【问题标题】:Extend AudioWorkletProcessor in wasm-bindgen?在 wasm-bindgen 中扩展 AudioWorkletProcessor?
【发布时间】:2021-01-01 16:31:48
【问题描述】:

有关如何使用 wasm-bindgen 在rust -> wasm 流中使用现有 javascript Web 系统的文档非常简单。简而言之:

  1. 将所需功能列为依赖项
// cargo.toml

[dependencies.web-sys]
version = "0.3.4"
features = [
  'AudioContext',
  'OscillatorNode'
]
  1. 通过 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()?;

链接到full example


虽然这种方法适用于大多数 Web 系统,但对于那些需要您扩展类的系统来说,它并不是那么简单。在这种情况下,我尝试使用 AudioWorkletProccessor from wasm-bindgen

在标准用法中,您应该扩展AudioWorkletProcessor 类,然后注册它。 MDN Example


我该如何解决这个问题?首先,我需要在 Rust 中扩展 AudioWorkletProcessor(它不做普通的类和继承),覆盖它的 process() 函数。然后我需要确保registerProcessor() 被注入到我的 rust 空间中。


编辑:WASM docs on extends

【问题讨论】:

    标签: rust webassembly wasm-bindgen audio-worklet


    【解决方案1】:

    您必须在 JavaScript 端执行此操作。 wasm-bindgen 不支持扩展导入的类并将它们重新导出为 JavaScript;但是,他们最终确实希望支持它,并且有一个 issue 来跟踪它,以及一个相关的 RFC

    【讨论】:

      猜你喜欢
      • 2021-12-20
      • 2021-09-15
      • 2021-04-16
      • 2019-09-14
      • 2020-08-29
      • 2022-01-23
      • 2019-03-17
      • 2022-01-23
      • 2020-09-11
      相关资源
      最近更新 更多