首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >setTimeout在MaxMSP的javascript中的问题

setTimeout在MaxMSP的javascript中的问题
EN

Stack Overflow用户
提问于 2017-03-28 11:13:47
回答 1查看 241关注 0票数 2

我已经看过很多其他问题了,但是我似乎不能用setTimeout来解决这个问题

因此,我一直在研究这个问题,并讨论了这个问题,但是由于某种原因,setTimeout不起作用,有什么建议吗?

代码语言:javascript
复制
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;
}

您可以忽略这个开关,因为它与MaxMSP的扩展一起工作,但在这里并不是很重要。我得到的错误是"Javascript ReferenceError: setTimeout未定义“。任何帮助都是非常感谢的!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-28 11:25:23

我以前没有和Max合作过,但是从一小部分搜索来看,你似乎在写一些类似于插件的东西。

看起来Max正在运行它自己的Javascript环境。setTimeout是Javascript中浏览器的window对象上的一种方法,因此它不一定是在浏览器之外的Javascript中实现的,就像Max看起来的那样。

推荐的替代方法似乎是使用环境公开的Task,这里有一些文档:https://docs.cycling74.com/max5/vignettes/js/jstaskobject.html

我无法对此进行测试,但是从文档中看,下面的内容应该是可行的:

代码语言:javascript
复制
var task = new Task(function() {
    calculate_curve(x_mod);
}, this);
task.schedule((t_amount / steps));
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43068067

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档