Javascript 在运行时更改值
我试图通过范围输入在运行时更改一个值,但我无法使它工作。我没有错误。当我改变onSlide中的频率时,声音仍然在800上播放。它应该改变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
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 */
}
});
});