Max:手势捕捉
1. 鸟瞰一下手痒一下,再结合标题,就可以知道这是一个可以捕捉鼠标手势的程序。不过看到key和sel物件的搭配便可知,我们可以用键盘按键来控制它。32, 114和112分别是空格、r和p的ASCII码,空格清除画布内容,r开始记录鼠标手势(再按一次则停止记录),p开始回放(再按一次则停止回放)。 2. 这种记录不仅能记录你绘制的东西,还能记录你鼠标实际的运动包括时间,并将这一切重放。 3. 整个程序共有3个coll物件,但他们都共享同样的数据—thegest。双击它,可以看到它所记录的数据(每记录一次,里边的数据便更新一次,当然)。它以20毫秒的间隔抓取我们的运动。 4. 录制部分:选中toggel开启trigger物件(复习一下:其中引数i为int的缩写),trigger俩口,左边设定metro为20毫秒进入WTHITM,意为以20毫秒的“采样率”捕捉鼠标行为。另外,metro还进入了int物件(缩写为i)。WTHITM提取scale出的两个值进入一个名为draw的子patch(bucket物件的作用是什么?自己看看它的help档)后在lcd物件上绘制出图案。 5. int和+物件,作用简单来说,就是一个没有时间上限的计时器(counter)。它可以给你鼠标行为记录的时间。这个值,以及WTHITM的两个值被pack后一起送入coll物件,第一个值是时间轴,后两个值是鼠标X、Y的位置,这三个值以20毫秒的间隔被coll物件记录,这里,coll物件其实是充当了一个数据记录的角色。 6. 为什么每次点击record(或者按r键)后,lcd面板内的图像都会被清除掉呢?这里我认为sel 1下边那个trigger用得很妙,每次点击,都会有两个clear命令通过t物件被分别送入lcd(s lcd)和coll物件内,因此没次点击,都会清空(及重写)lcd以及coll里边的内容。另外两个0分别被送入绿色的toggle物件(PLAY)及int物件,关闭绿色toggle(停止任何回放),并将计时器清零。当收到一个bang猴,trigger物件从右至左输出它的引数,更多内容请自行参阅它的help档。 7. 回放部分:原理同录制部分,而且更简单。有一点有意思,就是你可以改变这部分metro的快慢,以实现快进或慢放的效果。 8. 深蓝框的coll物件是告诉我们,我们可以依此让coll读取(read)外部的文档或者将它的记录存储(write)到外部以供以后使用。它存储的文档为普通的txt文件,可以用任何相关软件打开或编辑。 本里内关键物件: coll:保存并编辑一个不同消息的集合。 疑问: 每次回放,都会有一个填充为黑色的三角形(如图),每次位置大小都不一样,不知道为什么,也不知道是不是这个例子的bug,有知情者谢谢告知。