【问题标题】:Creating an Oscillator Node in Scala.js using js.Dynamic使用 js.Dynamic 在 Scala.js 中创建振荡器节点
【发布时间】:2014-07-01 03:35:57
【问题描述】:

我正在使用 Scala-js-fiddle 的在线版本。到目前为止,我已经能够成功声明一个音频上下文:

val ctx = js.Dynamic.newInstance(js.Dynamic.global.AudioContext)()

现在,我想创建一个振荡器节点。我试过(不成功):

val oscillator = ctx.js.Dynamic.global.createOscillator()

当我保存这个时,Scala-js-fiddle 说编译成功。但是,我也有错误消息。主要的是:

TypeError: Cannot read property 'Dynamic' of undefined

如何正确创建振荡器节点并使用 js.Dynamic 设置其频率值?

在普通的 Javascript 中,我会简单地写这样的东西:

var oscillator = ctx.createOscillator();
oscillator.frequency.value = 400;

我必须使用 js.Global.Function(...) 吗?这将如何运作?

【问题讨论】:

    标签: javascript scala web-audio-api scala.js


    【解决方案1】:

    解决了!事实证明,在创建这样的 AudioContext 之后

    val ctx = js.Dynamic.newInstance(js.Dynamic.global.AudioContext)()
    

    您可以正常调用JavaScript方法:

    val o = ctx.createOscillator()
    

    【讨论】:

    • 关于内部的一点要点:ctx 的类型为 js.Dynamic,它扩展了 scala.Dynamic。这意味着 Scala 编译器允许调用 any 方法并让它返回另一个 js.Dynamic。这就是为什么在您的问题中您可以在ctx 上调用js,然后在其结果上调用Dynamic,等等。
    猜你喜欢
    • 2020-07-12
    • 1970-01-01
    • 1970-01-01
    • 2018-10-28
    • 2015-11-30
    • 1970-01-01
    • 2020-07-12
    • 2015-11-16
    • 1970-01-01
    相关资源
    最近更新 更多