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