用一个例子来简单介绍一下SWS的Cycle action
昨天群里看到一个这样的需求
绑定Ripple all tracks和Move envelope points with items这两个开关,要求两个同时开启,同时关闭
如果按照一般的“绑定两个action”的思路,可能第一时间想到的是custom action
Toggle ripple editing all tracks
Options: Move envelope points with media items and razor edits
但是因为这两个action都是一个toggle动作,都在“开关”两种状态切换,假如他们各自处于一开一关的状态,那这个组合的效果就只会变成各自相对的一关一开,因此这个方案不合适
Cycle action
能解决这个需求的最佳方案是使用SWS的Cycle action工具,他跟custom action的最大区别是加入了
条件判断,不是简单的像custom action那样一根筋的从头运行到尾。只要能理清自己需求里的逻辑关系,就可以用cycle action来实现一些复杂的操作
基本操作
Cycle action界面如上图,左边是创建过的每一个cycle action,点击可以在右侧界面显示其内容,双击可以改名。下方的按钮,Apply是确认当前cycle action的编辑并添加到action list中,Cancel是关闭窗口,Import/export是cycle action内容的导入导出,Action list是呼出action list窗口
Cycle action内容编辑
如上文所说,使用cycle action关键是要理清逻辑关系。在开头提到的例子里,因为两个动作都涉及到两个状态的切换,所以需要选定其中一个,并以他的当前状态来决定应该采取的操作。以下就以《Toggle ripple editing all tracks》这个动作的状态为例说明以下逻辑关系
如果Toggle ripple editing all tracks处于打开状态
则运行
Toggle ripple editing all tracks(关闭ripple all tracks状态)
SWS: Set move envelope points with items off(关闭envelope follow item状态)
如果Toggle ripple editing all tracks处于关闭状态
则运行
Toggle ripple editing all tracks(打开ripple all tracks状态)
SWS: Set move envelope points with items on(打开envelope follow item状态)
理清了逻辑关系,下面开始在cycle action里实际操作一下
- 在左侧右击,点击Add cycle action,名字随意
- 在右侧编辑界面,右击,选择Add statement-->If,会为你自动添加以下内容
- 点击下方action list按钮,打开action list窗口,查找并选中Toggle ripple editing all tracks,回到cycle action窗口右侧,右击,选择 Insert selected action,可以看到刚才选中的动作已经被添加进列表里,拖动一下摆放顺序,如下图
- 按同样的方法继续添加动作,并按下图顺序摆好(相同的动作可以Ctrl c Ctrl v复制)
- 继续右击,Add statement-->ELSE,并继续添加余下的动作,按下图顺序摆好,完成
- 编辑完成,点击左下角的Apply按钮保存并生成到action list中
简单分析
整个动作可以分成IF和ELSE两部分,分别对应上述的两种逻辑关系
需要注意的是,Toggle ripple editing all tracks在第二三行都出现了,但作用不一样
If the next action is ON
Toggle ripple editing all tracks
这两句共同组成了对条件1的描述:
如果Toggle ripple editing all tracks处于打开状态
要注意,这个动作在action list里面的state栏会显示他的当前状态(on/off),只有这种自带状态的动作才能用作条件判断
然后第三四行就是满足条件1时要做的操作
Toggle ripple editing all tracks(关闭ripple all tracks状态)
SWS: Set move envelope points with items off(关闭envelope follow item状态)
由于条件1和条件2是互为相反的,用一个ELSE即可表示
最后倒数第二三行就是满足条件2时要做的操作
Toggle ripple editing all tracks(打开ripple all tracks状态)
SWS: Set move envelope points with items on(打开envelope follow item状态)
补充
窗口左边有一个叫Toggle的栏目,点击下面的格子将会在 空白/空心圆/实心圆 之间切换。只要是带圆形图案,就代表把这个动作设定为一个Toggle类的动作,你会在action list的state栏目看到他的on/off状态。同时如果你把他添加进工具栏里,并给他设定一个多状态的图标,他的on/off状态也会反映在图标上。但我还没搞清楚空心圆和实心圆的差别,如果你了解的话麻烦补充一下
更多例子
再补充一些我日常会用到的cycle action
用键盘代替鼠标点击移动光标
播放/暂停/停止录音
切换item左右通道反转/复原
总结
在避免写代码的情况下,Cycle action提供了比custom action更复杂的条件判断功能,让用户多了更多组合新动作的可能。只要理清了逻辑关系,发挥创造力,通过cycle action能组合出更多样化的功能