Max:封装

14mEncapsulation.maxpat
14mEncapsulation.maxpat

1. 运用patcher物件可以在一个patch内创建一个子patch(subpatcher),为了使我们的patch更简单易懂、易于修改,使用子patch封装可以很好的做到以上的诉求。在lock的状态下双击patcher物件可以打开封装在其中的子patch。

2. 双击绿框patcher物件,弹出它的子patch,上下两个分别为入口(inlet)和出口(outlet)物件,分别替代patcher物件的出、入口。在子patch内创建多少个入口(inlet)和出口(outlet)物件,在patcher物件上就分别对应有多少个出、入口。打开入口(inlet)和出口(outlet)物件的检查器,在comment一栏填入相应的名称或标记,将在今后编辑patcher物件的某些时候显示,以便于我们进一步的编辑。

3. 大家伙:拖动灰色框内的小球(这是一个叫做pictslider的物件)可以在底部lcd物件窗口内绘制出相应的图形。按空格键清除绘制内容(ASCII码对应为32,由key物件捕捉并由select物件(缩写为sel)触发)

4. 选中例子中“encapsulate from here —>”到“to here —>“之间的物件(共15个),然后选择Edit > Encapsulate可以将这一堆复杂的玩意全部封装到一个patcher物件内。lock状态下双击它,可以看到打开的子patch里使用了四个inlet物件和1个outlet物件,这与原始patch内这一部分的输入输出口的数量是一致的。

5. 封装能够完成两件事:i. 它允许我们在不与全部物件交互(甚至是看到)的情况下进行高层的应用,ii. 它允许我们在不改变高层程序任何东西的情况下,改变低层的逻辑。

本例内新物件:
patcher:在一个patch内创建一个子patch
inlet:从外部patch获取讯息
outlet:将讯息送至外部patch
pictslider:基于图像的滑动控制

发表评论

电子邮件地址不会被公开。 必填项已用*标注

This site uses Akismet to reduce spam. Learn how your comment data is processed.