浮动窗口的边界
浮动窗口的边界和一般生成的窗口不太一样,这里的浮动窗口指的是AE的Panel面板窗口,也就是在写浮动窗口脚本时需要声明的那句里的Panel。
图中蓝色框才是脚本的窗口边界,而这个面板的边界实际上是不能定义大小的,虽然在脚本中把脚本窗口连接到了这个面板。而且预定义(preferredSize)窗口大小对默认显示没有影响。
这就造成了一个问题,默认打开浮动面板时,这个窗口很小,不能刚好全部显示脚本内容,即便脚本元素的对齐都是fill。需要手动向下拉才可以全部看见。而且面板边界向下拉与脚本窗口蓝色边界无关,有时候还需要手动再调节一次蓝色边界,但是当窗口停靠在AE中时,就没有面板边界了,只需要调节蓝色边界就好了。
AE属性组
AE的属性都是按组来分的,比如图层的位置,实际是在变化属性组中的下级属性,实际AE也是这么显示的,点击图层的小三角,打开后显示的是Effect和Transform,再点击Transform的小三角才会显示位置缩放等一系列属性。
这也提示了一点,Effect也是属于图层的属性组,Effect面板中的各个效果,实际上是Effect属性组的下级属性。
想要访问效果面板中的某个参数,有这些方法:
1 2 3 4 |
var effect1 = app.project.item(1).layer(1).effect("Add Grain")("Viewing Mode"); var effect1again = app.project.item(1).layer(1).effect.addGrain.viewingMode; var effect1againtoo = app.project.item(1).layer(1)("Effects").addGrain.viewingMode; var effect1againtoo2 = app.project.item(1).layer(1)("Effects")("Add Grain")("Viewing Mode"); |
但是要注意的是,有些效果内的参数也是带分组的。
如果想要访问Cross的话是不用管Advanced的,组实际上也是一个参数,它与其他参数是平级的。
因此想要访问Cross,只需要这么写:
app.project.activeItem.selectedLayers[0].effect("IB RealShadow")("Cross")添加效果后返回的内容
theLayer.effect.addProperty("IB RealShadow");使用 addProperty 方法添加效果,这个方法返回的并不是判断是否成功添加的布尔值,而是刚刚添加的效果对象。
所以使用时可以直接给这个方法赋予一个变量,那么这个变量就可以表示当前添加的效果进行下一步操作,否则使用效果组内的数组形式来进行访问,很难判断当前添加的效果位于效果组内的第几位,谁知道在使用脚本之前这个图层有没有其他效果呢。
alert()
alert() 这个属于窗口类方法,不需要实例化直接就可以用。但是它有很多个小细节工具书中并没有说。首先它的参数不止一个,应该是 alert(text, title) 。text为要显示的字,title则是警告框的标题,不过这个标题只在Windows上才会显示。
还有一个是如果文字中包含换行符“\n”,那么第一行会自动加粗,形成类似标题的样式,不知道是不是只在Mac上有效。
添加调整图层
补加一个算作充数的吧,就是添加调整图层,有很多专门添加固态层或者灯光摄像机之类的方法,但是就是没有添加调整图层的方法。
其实想添加调整图层,需要添加其他类型的图层,比如固态层,然后改变 theLayer.adjustmentLayer = true; 属性值为true,这个图层就变为调整图层了。