- Max/MSP/Jitter 官方教程翻译06 - 控制视频播放
- Max/MSP/Jitter 官方教程翻译07 - ARGB 颜
- Max/MSP/Jitter 官方教程翻译10 - 交叉渐变
- Max/MSP/Jitter 官方教程翻译08 - 调整颜色
- Max/MSP/Jitter 官方教程翻译09 - 调整图像颜色
- Max/MSP/Jitter 教程04 - 创建矩阵
- Max/MSP/Jitter 官方教程翻译05 - 矩阵的数学运
- Max/MSP/Jitter 教程03 - 播放 QuickTi
- Max/MSP/Jitter 官方教程翻译13 - 列表和矩阵
- Max/MSP/Jitter 官方教程翻译16 - 矩阵定位
00 翻译自 Cycling74 的 Max/MSP/Jitter 官方文档:Attributes: Editing Jitter object parameters
属性是指定 Max 对象行为的方法。大多数 Jitter 对象使用属性来指定当前状态的变量。
Max 计数器对象许多 Max 对象使用多个参数来确定行为。对象名称后面的这些参数的顺序,决定了对象如何解析它们。在上面的例子中,counter
的第一个参数设置了计数的方向;第二个和第三个参数确定最小值和最大值。
这些值都是数字,参数个数可能会影响对象的行为,所以它们的顺序很重要。如果 counter
只有两个参数,它们会作为最小和最大值,而不是方向和最小值。参数的位置和数量最为关键,在 counter
的例子中,如果只有两个参数,就没办法创建能够指定方向和最大值的 counter
对象。
给定的对象参数,通常被视为初始值,可以从其他入口或发送特殊消息给对象来修改这些值。例如,分别发送整数到第 2 个和第 5 个入口,来更改 counter
对象的方向和最大值,它们会替代默认值。同样,你可以向左入口发送消息 min
后跟一个整数,来更改对象的最小值。
当 Max 对象只有两、三个参数时,天下太平。但是 Jitter 对象通常有很多很多变量(甚至几十个)。如果所有变量都依赖于入口和对象参数的顺序,那么光看文档就够你忙的……
设置属性
与 Max 对象不同,Jitter 对象可以用属性来设定行为。将属性与 Jitter 对象的名称一起输入对象框,或者在创建对象后用消息设置(和检索)属性:
具有对象名称后的属性的Jitter对象上面是 jit.brcosa
的例子,它有三个属性。使用 @ 符号 + 属性名称 + 一个或多个参数
(可以是任意数据类型:int,float,symbol 或 list),在对象框中设置属性。
可以在对象的名称之后,以任意顺序输入个数不限的属性。你可能不知道 jit.brcosa
对象的功能,但可以根据属性的名称以及数据类型来推断。
提示:@符号与属性名称之间没有空格
同样重要的是:Jitter 对象可以同时具有输入的属性和输入的参数。请参阅下面的 Jitter 对象参数 部分。
与 Max 对象一样,创建 Jitter 对象并设置初始值以后,可以向对象发送消息随时更改这些属性值:
使用 Max 消息更改属性jit.brcosa
对象的亮度属性初始值为 0.5(在对象框中输入 @brightness 0.5
),然后可以发送消息 brightness [float]
到对象的左入口来更改。发送带有属性名称的消息(后跟相关参数)到 Jitter 对象的左入口,就可以更改几乎任何属性。
与 Max 对象一样,Jitter 对象有参数的默认值。上面的 jit.brcosa
对象只设置了亮度的初始值,其他属性都使用默认值。在上面的示例中,使用消息更改对象的对比度(contrast)和饱和度(saturation)属性的值,从而替换对象的默认值。
下面说明如何设置对象的属性值。
Jitter 对象参数
大多数 Jitter 对象有四种输入属性
或输入参数
。实际上它们都是属性,只不过 Jitter 对象会自动判断应该用作属性还是参数。
上面 jit.rota
对象有两个初始化的属性:anchor_x
和 anchor_y
。但其他数字是什么意思呢?
如果 Jitter 对象处理的是矩阵数据,则参数将被理解为:
- 输出矩阵的 planecount
- 输出矩阵的类型
- 输出矩阵的大小或维度
现在我们知道,上面的 jit.rota
对象将输出一个由 4 个 char(8位整数)数据平面组成的矩阵,每个平面的维度是 320x240。
注意:如果要指定 Jitter 对象的参数,参数必须出现在任意属性之前。否则 Jitter 对象会将参数误解为属性的值,而不是对象的参数。
所有可以输出矩阵数据的 Jitter 对象,都有几个共同的属性,它们可以设置参数:planecount,type 和 dim。可以通过输入属性(不需要指定顺序),也可以用消息触发更改。例如,下面的三个对象是等价的:
参数或属性?你来定- 第一个对象的输出矩阵,直接使用
输入的参数
来设置。 - 第二个对象使用
输入的参数
设置了planecount
和type
,但使用了输入的属性
设置了dim
的数量。 - 第三个对象使用
输入的属性
来设置所有内容。
你也可以用 loadbang
对象触发的消息来初始化对象属性:
查询属性和对象状态
查找对象属性设置的最快方法,是查看检查器(inspector)。选中对象,按 cmd/alt + i
或单击右侧工具栏上的 i 图标就可以打开。在窗口底部附近可以找到当前属性设置。
属性的另一个功能是显示 Jitter 对象属性的当前值。用一个 get
开头的消息,紧跟想要查询的属性名(与get之间没有空格)来触发。比如下图的 getdim
可以触发动作,获取 jit.grab
对象的 dim 当前参数。结果值由 Jitter 对象以消息形式从右输出口输出(以属性的名称 dim 开头)。
使用 get
可以查询出属性的当前值,即使之前从未设置过。例如,下面的 patch 获取了 jit.plur
对象的一些默认值。用 route
对象可以轻松分离每个属性的值。
你可以发送给任何 Jitter 对象getattributes
和 getstate
消息,来获得对象的所有属性。
getAttributes
消息令 Jitter 对象输出它包含的所有属性列表。查看几个 Jitter 对象,很快就会发现几个频繁出现的属性(例如outputmode,type 和 dim)。其他(例如 jit.brass 对象中的 mask)则是某些对象独有的。
getstate
消息可以一次性输出 Jitter 对象所有属性的值:
这样我们就可以用 route
,unpack
和其他对象来按需查找属性值了。在后续的教程中会遇到几个 Jitter 对象,其属性基于输入矩阵(或被对象打开的文件)执行的计算而更改。想要找出对象计算结果,就需要查询相关属性值。
ATTR
你还可以使用 attrui
对象读取属性值。这是一个 UI 控件,它与对象的入口是双向连接的。attrui
对象有两个部分,左边部分是所有可用的属性的下拉菜单。选择属性后,右侧会显示属性的当前值,并可编辑。
小结
Jitter 对象的属性,让我们可以很好地管理复杂的对象参数。你可以使用属性来初始化、更改和查找存储在 Jitter 对象中的当前值。直接在属性名称后赋值,就免去了记忆参数功能和顺序的麻烦。
网友评论