© Shine's Blog

Powered by LOFTER

[Max Msp 中文教程] Basics 02.Bang!

翻译:阳光

(请前往 http://cycling74.com/downloads/ 下载Max的试用版,打开后点击菜单Help-Tutorials,即可看到Max教程,本教程即是其中内容的中文翻译,请结合软件给出的示例工程学习)

Bang信息

        在这一节教程里,我们会通过对bang的学习来了解Max工程中信息的走向。
        
        这个简单的示例能让我们知道如何在Max中产生信息,并知道这些信息是如何以一种预先设定好的顺序来传送的。
先到处看看
        看一下02mBang这个工程。在它的左边是一个非常简单的patch,一个按钮连接着一个print。如果你点击按钮(旁边有注释“Click me!”),你会看到Max window显示了一个bang信息——这就是button输出的信息。
        
        Bang信息在Max中有特别的含义——它告诉object该干活了。一般情况下,给一个object发送bang信息会让它从自己的出口输出信息。在这个简单工程的第二部分(右边),有一个标有“Now click me!”的按钮连接着一个message box(填有蚊子 Gotcha!),这个message box也连接到了一个print。如果我们点击message box,我们可以看到“Gotcha!”这条信息被发送到了Max window,这与上一节所讲的是一样的。现在,点击按钮,我们看“Gotcha!”又一次被发送到了Max window,这是怎么回事呢?
        
        让我们来追踪一下message的走向。首先,点击按钮会从它的出口发送一个bang出去,这个bang经由patchcord来到了message box的入口。当message box接收到了bang信息,它就会执行它的任务——将它包含的文字发送出去。因此,“Gotcha!”就从message box的出口来到了print,最终被发送到了Max window。
        
        大多数object(包括message box和按钮)会将bang信息作为执行自己任务的信号。在接下来的教程中我们会更加了解那些处理数字或其它对象的object是如何以这种方式运行的,但现在我们只需要了解的就是:message box的作用就是创建文字并发送出去,而发送bang信息给一个message会让它输出它储存的文字信息。
        
在连线里追踪message

        如前面提到过的,bang信息可不止触发message box这一种功能,它可以触发很多其他的object。点击第三个patch右上角的按钮——它连接着另一个按钮,第二个按钮会被bang信息触发,然后产生新的bang信息发送给print。
        
        注意这个print包含了一个argument:one。如果你看一下Max window,你会发现,在最左侧那一栏“one”代替了“print”。这对于调试Max程序非常有用,因为它能够让你标记自己的打印输出从而将它们在Max window里区别开来。
        
        现在解锁这个程序,并将右上角按钮的出口链接到左边单独按钮的入口。
        
        注意这不会使原来的连接失效,出口可以链接多个object,相同的message会经由所有的patchcord发送出去。锁定程序然后点击最上面的按钮,bang信息会发送给两个按钮,然后这两个按钮又会都产生自己的bang信息。
        类似地,多条patch cord也可以连接到某个object的一个入口上去。在我们现在这个工程里,两个按钮都连接到了那个print上。当你点击上方的按钮,接收到bang信息的两个按钮会输出信息并连接到print,Max窗口里会显示两个bang信息。
        
        下一个patch会展示这两条原则。点击下一个patch上方的按钮,会在Max window里产生三个bang信息(由一个标记有several的print发送给max window)。处于中间的两个按钮会发送自己的bang给print,它们连个的bang又是由最上方的按钮触发的,而最上方的按钮自己的bang也通过一条线直接发送给了print。
        在最右边的patch中我们能更深入地了解这一点。它有许多的message box,全都连接着同一个标有“many”的print。
        
        当你点击最上面的按钮, 注意Max window中信息显示的顺序,信息并不是按字母顺序显示的——它们是根据这些message box在工程中的空间位置来显示的,按照从右到左的顺序。我们在之后的教程中会了解更多的细节,但必须明白当多个object连接到一个object时,那众多的信息是按照从右到左的顺序发送给目标object的。
        
        解锁patch,再多添加一些按钮。要添加按钮,你可以打开object浏览器选择按钮图标,或简单地敲击键盘上的b键来添加(在解锁状态下)。将你添加的按钮连接到右边patch的那些按钮上去,尝试不同的组合,如多个出口到一个入口,或者多个入口到一个出口,并猜一猜你所做的连接会在Max window中产生什么样的结果。
        
结论

        Bang信息几乎是Max环境中最重要的信息,它能让其他object输出它们的内容,也可以用来构建多个连接来达到想要的效果。我们也可以看到不管是入口还是出口,都可以有多个连接,而且这些连接所输出的内容顺序是可以控制的。我们也知道了诸如print这样的object,可以添加一个argument,这会改变它的一些行为。print的argument可以让你在Max window里分辨出是哪个print输出的这些内容。

发表于2014-07-07.