Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在运行时更改值_Javascript_Ecmascript 6_Timbre - Fatal编程技术网

Javascript 在运行时更改值

Javascript 在运行时更改值,javascript,ecmascript-6,timbre,Javascript,Ecmascript 6,Timbre,我试图通过范围输入在运行时更改一个值,但我无法使它工作。我没有错误。当我改变onSlide中的频率时,声音仍然在800上播放。它应该改变 import $ from 'jquery'; import rangeslider from 'rangeslider.js'; import T from 'timbre'; window.$ = $; $(document).ready(() => { var f = 800; T("sin", {f

我试图通过范围输入在运行时更改一个值,但我无法使它工作。我没有错误。当我改变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
不会再次调用
T
。什么是
T
,您可以更改现有实例吗?对不起,编辑了代码。T是timber.js的一个实例。滑块获得的每个更改事件都将调用声音库.then play()。Wich将陷入一个plays()的
f
是通过值而不是引用传递的。因此,在使用后更改
f
不会改变任何东西(内存现在指向不同的位置)。您需要在
T
中使用一种方法来更改频率(我不知道库),但调整变量不会起任何作用。集中精力在音色上寻找一种方法来调整频率,因为这是一条死胡同。文档:我找不到任何与我想做的相关的东西。
$(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 */
        }
    });
});