[1,2,3].do { /* how to wait 1s here? */ }
我正在学习supercollider.我找到了SimpleNumber.wait函数,但我很快就知道它在"普通"函数中不起作用,只在一些称为Routines的"不同"函数中.
我故意停在那里问这个问题:在someArray.do构造的每次迭代中有没有一种简单的方法可以暂停一段时间?通过"简单的方式",我的意思是不需要学习十几个新概念并经历范式转换.
说得好:我知道我最终需要学习关于超级滑翔机中的常规,任务和其他排序机制的整本大书,但是现在我只想玩"玛丽有一只小羊羔"并将其称为noob的一天,没有在我能做任何事情之前必须学习所有这些.
这可能吗?
例程需要使用.wait/.yield功能.当你打电话给eg时3.wait,你告诉某个时钟在某个地方等待3秒钟,然后从你离开的地方继续.为了做到这一点,你需要与一个时钟进行通信,你需要一些可以停止和启动的东西(一个例程执行一些功能).
您尝试做的完整语法是:
Routine({
[1, 2, 3].do {
|n|
n.postln;
n.wait;
}
}).play(AppClock);
上面创建一个带有函数的路由(您的1,2,3循环),然后在时钟(AppClock,标准时钟)上播放它.
但是,.fork函数方法是执行上述操作的简写(即创建例程并播放它):
{
[1, 2, 3].do {
|n|
n.postln;
n.wait;
}
}.fork();
| 归档时间: |
|
| 查看次数: |
162 次 |
| 最近记录: |