用一个例子来简单介绍一下SWS的Cycle action

用一个例子来简单介绍一下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,会为你自动添加以下内容

if1

  • 点击下方action list按钮,打开action list窗口,查找并选中Toggle ripple editing all tracks,回到cycle action窗口右侧,右击,选择 Insert selected action,可以看到刚才选中的动作已经被添加进列表里,拖动一下摆放顺序,如下图

if setting

  • 按同样的方法继续添加动作,并按下图顺序摆好(相同的动作可以Ctrl c Ctrl v复制)

if1 done

  • 继续右击,Add statement–>ELSE,并继续添加余下的动作,按下图顺序摆好,完成

alldone

  • 编辑完成,点击左下角的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

用键盘代替鼠标点击移动光标

移光标

播放/暂停/停止录音

play

切换item左右通道反转/复原

reverse

总结

在避免写代码的情况下,Cycle action提供了比custom action更复杂的条件判断功能,让用户多了更多组合新动作的可能。只要理清了逻辑关系,发挥创造力,通过cycle action能组合出更多样化的功能

3 Likes

有没有可能,这个icon会实现一个三元的状态转换操作,有点类似于ripple在disable、per、all三个状态中转换

这方面我了解有限,即使是用脚本也只能设定on/off两种状态,不知道有没有别的办法能超过两种的