【问题标题】:Change value on runtime在运行时更改值
【发布时间】:2017-12-22 10:04:57
【问题描述】:

我正在尝试通过范围输入更改运行时的值,但我没有让它工作。我没有错误。当我在 onSlide 中更改频率时,声音仍然会在 800 上播放。它应该会改变。

import $ from 'jquery';
import rangeslider from 'rangeslider.js';
import T from 'timbre';

window.$ = $;

    $(document).ready(() => {

        var f = 800;

        T("sin", {freq:f, mul:0.5}).play(); /*plays a continous sound*/

        $('input[type="range"]').rangeslider({
            polyfill : false,
            onSlide: function() {
                var ff = 440; /*changing frequancy, but the tone is still the same.*/
                f = ff;
            }
        });

    });

【问题讨论】:

  • 更改变量f 不会再次调用TT 是什么,你能改变现有的实例吗?
  • 抱歉,修改了代码。 T 是 timbre.js 的一个实例。一个声音库。
  • 然后 play() 将在滑块获得的每个更改事件上被调用。 Wich 只会卡在 play() 的循环中
  • f 是按值而不是引用传递的。因此,在使用f 之后更改它不会改变任何东西(内存现在指向不同的位置)。您需要T 中的一种方法来改变频率(我不知道库),调整变量将无济于事。专注于寻找一种音色方法来调整频率,因为这是一个死胡同。
  • 文档:mohayonao.github.io/timbre.js 我找不到任何与我想做的事情相关的内容。

标签: javascript ecmascript-6 timbre


【解决方案1】:

Getting Started所示,需要将实例存储在一个变量中,以便以后调用setmethod

$(document).ready(() => {
    const tone = T("sin", {freq:f, mul:0.5}).play(); /*plays a continous sound*/
    $('input[type="range"]').rangeslider({
        polyfill : false,
        onSlide: function() {
            tone.set( {freq: 440 }); /* changing frequency of the tone */
        }
    });
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-05
    • 1970-01-01
    • 2021-07-27
    • 2013-08-17
    • 1970-01-01
    • 2018-08-22
    • 1970-01-01
    相关资源
    最近更新 更多