java脚本计算器按钮无反应_AE脚本折腾入门(一)

e21e2100458aa74d9961382854878a87.png

AE脚本能代替我们执行重复性的动作,大大提高工作效率。但AE脚本使用的Java语言让很多人望而却步,其实不然,没有编程语言基础学AE脚本也不难,有句话是这么说的,“我们不生产代码,我们是代码的搬运工”。对于js我们并不需要深入去学习,我们只要能看懂,知道怎么用就可以了。下面是我整理的之前做脚本的方法笔记,供大家参考。由于内容比较多,所以将分多次更新。

本次更新内容如下:

  • AE脚本工具安装
  • UI界面制作
  • 按钮基本功能实现
  • 图层属性、轨道蒙版(遮罩)、蒙版、特效的添加方法

相关资料下载地址链接:https://pan.baidu.com/s/1Omdw2-jnNP76XNd4b8CPGA 提取码:hgze

AE脚本工具安装

工欲善其事,必先利其器。AE脚本编辑器的Adobe ExtendScript Toolkit安装。可以在adobe官网上搜索Adobe ExtendScript Toolkit,然后根据自己的系统下载相应的版本即可。

599dc79603a1aa2d1fa6e2f50aca8a8b.png

安装完可以在AE的File >Scripts >Open Script Editor 下打开编辑器。

c3ae396fc430f5bbe8eec74a6b8fb86a.png

可先输入下面的代码,然后点击右上角绿色三角形的按钮运行,测试下是否安装成功。(alert()方法用于显示一个提示框)

alert ("hello world");

7a20794dd63528aa948c2e9180427887.png

如果运行后出现提示框,则说明编辑器已正确安装。

b642714e25fefecd5cae93cc8a07d589.png

除了AE的脚本编辑器,我还用到的另外两个脚本,aescript P9 scriptUI builder(简称P9UI)跟rd_GimmePropPath。

脚本操作窗口的制作可以用P9UI脚本,这个脚本提供了一个制作UI窗口的图形界面,并可将做好的UI窗口生成相应的代码。具体操作可以看下面的讲解视频。

03466e0023fb7a5cf58a13b3a4634aeb.png
https://www.zhihu.com/video/1104494270152769536

rd_GimmePropPath脚本用于获取选择的属性的路径(即代码),也是用的获取表达式的路径。

11ace51a980f35f64162532b3519c962.png

UI界面制作

首先我用P9UI做了个UI界面,生成相应的代码拷贝到脚本编辑器上,并在前面加上/*,后面加上*/,此时文本会变成绿色,表示这段内容是注释,不会被执行。除了/* ,*/表示注释,在行前加//也表示注释,该行不会被执行。

736930e7e2a310f30958193759ca615d.png

由于生成的代码只是一个悬浮窗口,所以我用下面的方法将它改成可吸附的停靠窗。

dc9ec637917e70cce284e948ba503fdc.png

代码如下:

function myUi(obj){
        win=(obj instanceof Panel)? obj : new Window("palette","new project",[0,0,500,450],{resizeable:true,});
        //win=new Window("palette","new project",[0,0,500,180],{resizeable:true,});
        panel_1=win.add("panel",[1,1,400,150],"swrScripts");
        panel_1.graphics.backgroundColor = panel_1.graphics.newBrush (panel_1.graphics.BrushType.SOLID_COLOR,[0.75,0.75,0.75]);
        but_1=panel_1.add("button",[5,5,75,25],"横胶片");
        but_2=panel_1.add("button",[100,5,170,25],"竖版");
        but_3=panel_1.add("button",[200,5,270,25],"竖前大后小");
        but_4=panel_1.add("button",[300,5,370,25],"横前大后小");
        but_5=panel_1.add("button",[5,50,75,70],"上下版");
        but_6=panel_1.add("button",[100,50,170,70],"中版");
        but_7=panel_1.add("button",[200,50,270,70],"脚标");
        but_8=panel_1.add("button",[300,50,370,70],"调试");
        //but_9=panel_1.add("button",[5,100,75,120],"中80");
        //but_10=panel_1.add("button",[100,100,170,120],"脚标");
        //but_11=panel_1.add("button",[200,100,270,120],"button");
        //but_12=panel_1.add("button",[300,100,370,120],"button");
        //but_13=panel_1.add("button",[5,150,75,170],"button");
        //but_14=panel_1.add("button",[100,150,170,170],"button");
        //win.center();
        //win.show();
}
myUi (this);

将脚本保存在AE的安装目录下的Scripts >ScriptUI Panels 下,命名是swr9,重新打开AE,在window菜单下面打开脚本,是个可以吸附的停靠窗口。

437b16763ccc8e3cdf4999b7dbba7a56.png

11df057a057fd3a5930855d04297bc26.png

下面仔细看下代码(有java基础的可以直接跳过)

AE脚本中一般“”的意思是命名,编辑器中红色字出现,修改“”内的内容就可以改名字。[ ]中的数值是用于定义区域位置跟大小的。黑色字体是代码,绿色字体是注释,红色字体是字符串,蓝色字体是类。这个了解下就可以,知道怎么改就好了。

ca92e8c2998bfa5eba33af03d485c12a.png

以上做好了UI界面,下面开始写入每个按钮的代码。

按钮基本功能实现

首先分析下需求,按钮除了要实现想要特定效果外,还需要什么基础的功能。我觉得至少需要下面两个功能:

  1. 当要对某个层实现按钮的效果时,首先要确保已选择了某个层。如果没有选择层就点击按钮,需要系统提示没有选择层。
  2. 如果点错了按钮,要能够撤销(Ctrl+Z)。

所以我用下面代码实现

57017bea1d09c38f73ca2aed833dfbb0.png

d0694a37f9b3d52d39fb06b995efb82f.png

代码如下:

 but_1.onClick=function(){
      var currentComp,currentLayer; 
      function selcomp(){
           currentComp=app.project.activeItem;                                       
       if(!(currentComp instanceof CompItem)){
         alert("give comp");
         return false;
        }else if(currentComp.selectedLayers.length<1){
            alert("give layer");
            return false;
            }else{
                currentLayer=currentComp.selectedLayers;
                return true;}
       }
        app.beginUndoGroup("撤销");
 
         if(selcomp ()){
          }
        app.endUndoGroup();
}

实现了基础功能后,就该来实现特定的功能。

图层属性、轨道蒙版(遮罩)、蒙版、特效的添加方法

先说java中 var的作用,用于定义一个变量,像是做数学方程中设的X、Y、Z,可以定义的这个变量的名字、值等。

如果要用代码修改一个层的属性,那么就先要知道这个属性的代码,这就需要用到前面提到的另一个脚本rd_GimmePropPath。选择层的属性,点击Get Property Path获取代码。这个方法也可以用于获取层的特效代码。

380062275bebdc93cd67b2f782ee848d.png

先看仔细下用脚本获取的代码

app.project.item(1).layer("Green Solid 2").property("Transform").property("Position")

这个构成为:合成.层.变换.属性。但在执行代码时已经选择某个层,所以可以用选择的层来代替app.project.item(1).layer("Green Solid 2")。下面具体看下第一个按钮实现的效果。

a49bf8b70f19428dd744bcf054faf6ee.png

不难发现,如果要修改选中层的变换属性可以用下面这个代码

层名.property("Transform").property("属性").setValue([数值X,数值Y]);

关于属性跟相关方法可以在官网脚本说明书的Property object(124页)中查看。

修改轨道蒙版用下面这个代码

层名.blendingMode=BlendingMode.具体模式;

关于轨道蒙版相关的可以在脚本说明书的AVLayer blendingMode attribute(42页)中查看。

添加蒙版用下面这个代码

 var myMask= 层名.mask.addProperty("ADBE Mask Atom");
                   var myPath=new Shape();
                   myPath.vertices=[四个顶点的坐标];
                   myMask.property("ADBE Mask Shape").setValue(myPath);
                   myMask.property("蒙版属性").setValue([数值X,数值Y]);
                   myMask.maskMode=MaskMode.蒙版模式;

这里添加蒙版实际是先建一个形状图层,然后将形状图形赋值给蒙版。这里我们是用四个顶点做成矩形蒙版,我们也可以做成圆角的矩形蒙版。关于形状图层相关的可以在脚本说明书的Shape object(172页)中查看。关于蒙版相关的可以在脚本说明书的MaskPropertyGroup object(106页)中查看。

添加特效可以用下面这个代码

   var myRamp=层名.effect.addProperty("特效名");
                   myRamp.property("属性名").setValue(数值);

添加特效就是在层上添加新得属性,所以特效的说明在属性组里。关于特效相关的可以在脚本说明书的PropertyGroup object(155页)中查看。

这个脚本应该是去年写,当时有一段时间做的是旧电影风格视频,选择的第一二层是素材,用于叠加在第三层上,第三层我们自己拍的视频。目前这个脚本是需要将素材放到合成中,其实也可以通过代码直接将素材从项目窗口放到合成中。这个我下次更新跟合成,预合成,新建层等一起写。

关注公众号:羊不吃草,获取更多影视后期学习笔记。

http://weixin.qq.com/r/chxqcljE1wWorRwR90lg (二维码自动识别)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值