MaxMSP的javascript中setTimeout存在问题
我已经研究了很多其他问题,但我似乎无法用setTimeout解决这个问题 所以我一直在研究这个问题,但由于某些原因,setTimeout不起作用,有什么提示吗MaxMSP的javascript中setTimeout存在问题,javascript,Javascript,我已经研究了很多其他问题,但我似乎无法用setTimeout解决这个问题 所以我一直在研究这个问题,但由于某些原因,setTimeout不起作用,有什么提示吗 function curves(val_name, mini, maxi, t_amount, steps) { //t_amount MUST be in ms for (x = 0; x < steps; x++) { var x_mod = scale(x, -6, 0, 0, steps);
function curves(val_name, mini, maxi, t_amount, steps) {
//t_amount MUST be in ms
for (x = 0; x < steps; x++) {
var x_mod = scale(x, -6, 0, 0, steps);
var value = setTimeout(calculate_curve, (t_amount / steps), x_mod);
switch (val_name) {
case "vol_stretch1":
var vol_stretch1 = this.patcher.getnamed("stretching").subpatcher(0).getnamed("vol_stretch1");
vol_stretch1 = value
break;
case "vol_stretch2":
var vol_stretch2 = this.patcher.getnamed("stretching").subpatcher(0).getnamed("vol_stretch2");
vol_stretch2 = value
break;
case "vol_stretch3":
var vol_stretch3 = this.patcher.getnamed("stretching").subpatcher(0).getnamed("vol_stretch3");
vol_stretch3 = value
break;
}
}
}
function calculate_curve(x) {
var constant_e = 2.718281828459;
var result = (1 / 1 + (constant_e ^ (x * -1))) * -1; //sigmoid function * -1 to have the nice rise
}
function scale(unscaledNum, minAllowed, maxAllowed, minimum, maximum) {
return (maxAllowed - minAllowed) * (unscaledNum - minimum) / (maximum - minimum) + minAllowed;
}
函数曲线(值名称、最小值、最大值、t\u值、步长){
//t\u金额必须以毫秒为单位
对于(x=0;x
您可以忽略开关,因为它与MaxMSP的扩展一起工作,但在这里并不重要。我返回的错误是“Javascript ReferenceError:setTimeout未定义”。非常感谢您的帮助 我以前没有与Max合作过,但通过少量搜索,它看起来像是在按照插件的思路编写东西 看起来Max正在运行自己的Javascript环境
setTimeout
是Javascript浏览器的窗口
对象上的一种方法,因此它不一定像Max那样在浏览器之外的Javascript中实现
推荐的替代方案似乎是使用环境公开的任务对象,这里有一些文档:
我没有办法测试这一点,但从文档中可以看出,按照下面的思路应该可以做到:
var task = new Task(function() {
calculate_curve(x_mod);
}, this);
task.schedule((t_amount / steps));
你是怎么运行这个JS的?是否在浏览器/节点中/etc@George-看起来Max就是环境,它没有setTimeout实现。@Hecksa我就是这么想的,如果是这样的话,你的回答很好地涵盖了它。非常感谢你和George。我听说过JS任务对象,但出于某种原因,我从未在这里想到过它。我感谢你的帮助