关于 propertyGroup() 是什么,怎么用,不了解的同学先去看看官方文档:

After Effects 中的表达式语言 (adobe.com)

propertyGroup() 方法我会用的比较多,它类似 jQuery 中的 .parent() 方法,你可以用它来读取某一层父级的属性,如果在 AE 中使用拾取器引用属性,它获得的属性路径是固定的,一旦复制图层或内容,它依然指向初始的引用,而不能切换到新的父级,所以学会使用 propertyGroup() 方法在后期表达式的学习和应用中非常重要,同时它也能帮助你理解 AE 的属性结构。

我们简单一点吧,直接上干货:

// AE 表达式帮助器,将帮助器应用于空文本图层,以显示想要查询的信息
// 调整文本字号以便舒适的显示结果
helper = {// 列出当前属性的父级路径,用来帮助我们使用 propertyGroup() 方法,这样就可以清晰的看到该方法应该设置的参数// property 属性,图层中的任意属性,因为是在空文本图层中显示,因此你需要使用 pick whip 索引目标属性// levels 是向上索引的层级,默认是 10,你可以大概预估一下层级,超出范围也不会报错,但是会输出提示,它不会影响范围内的正确结果printPropertyParent: (property, levels = 10) => {// 声明一个新数组,这主要是为了可以从下往上显示,更符合父子层级的阅读顺序let _arr = [];// 根据要显示的层级循环查询for (let i = 1; i <= levels; i++) {// 使用 try catch 语句避免 AE 抛出错误,AE 一旦表达式报错,就无法继续运行,在非调试环境中尽量保持 AE 报错,否则很难查找错误try {// 尝试读取这个层级的父级,如果可以读取会将层级索引和层级名称记录到数组中_arr.push(`[${i}] ${property.propertyGroup(i)}`);} catch (error) {// 如果不能读取,会记录错误信息_arr.push(`[${i}] ${error}`);}}// 数组反向_arr.reverse();// 将数组连接成字符串,每一个层级进行一次换行return _arr.join('\n')}
}

这个帮助器我已经上传到 Github 上面了,你可以直接下载,也可以自己建一个文本文档,把代码贴进去,然后保存退出,再修改扩展名为 .jsx 就可以在 AE 中使用了。在之前的文章中,我专门写过函数复用的方法,这次用到的也是其中的一个方法,有兴趣可以往前翻一翻文章。这个帮助器后续如果有更新,你可以重新下载,或者在 Github 上 Follow 这个项目。

GitHub - daveswong/expressionHelper.jsx: AE 表达式帮助脚本

代码的实现过程都写在注释中了,不再解释,下面主要讲一下怎么使用。

1. 导入脚本文件

与导入一般素材的方法相同,在项目面板中双击导入文件就行了,导入以后添加到合成时间线,虽然这不是必须的,但是如果它不在你使用的合成中,你在整理工程时就很容易把它删掉。

2. 新建文本图层

新建一个文本图层,用来显示输出结果。因为 AE 不像我们编写前端 JavaScript 代码那样可以使用浏览器控制台来输出 console.log(),所以只能借用文本图层来显示。如果使用了图层索引,尽量把调试用的图层都放置在最下方,以免干扰其它代码的运行。

3. 调用帮助器的方法

在文本图层源文本属性开启表达式,贴入下方的代码;

// 声明目标属性
let _property = thisComp.layer("随机块控件").content("行 1").content("块 1").content("矩形路径").size;
// 执行脚本文件
eval(footage("expressionHelper.jsx").sourceText);
// 调用 printPropertyParent() 方法
helper.printPropertyParent(_property, 10)

如上图中所示,从当前的矩形路径大小属性到形状图层一共有 7 个层级,我已经在左下角给它们标记上了对应的索引序号,你会疑惑为啥看不到 2 和 4 这两个层级。实际上你看一下层级 6,它是一个内容容器,是一个单独的属性组,除了内容属性组,还有效果和变换属性组。同理,其它内容组也讲内容和其它属性做了分组,但是它们并没有以组的形式显示,这也是 propertyGroup() 方法用起来困难的原因。

有了上面的结果,再想使用 propertyGroup() 方法导航到需要的位置就非常简单了,它可以像下面这样来应用。

后面涉及到它的用法的案例还会有很多,关注我的专栏就能了解到。对于初学的同学,建议先自学一下正规入门的课程:

知乎影视后期制作实战营-0610-开课

【AE表达式】实用:查看 propertyGroup 索引相关推荐

  1. 如何学好 AE 表达式?

    --你知道世界上最难的问题是什么吗? --就是这道题. 上面的只是一个梗,不过面对知乎里或者朋友的这种发问,我真的不知道怎么回答,从上个礼拜,我就开始琢磨这个事儿:如何讲明白如何学好 AE 表达式.问 ...

  2. ae绘图未指定错误怎么办_【教程】最全的ae表达式教学分享(实用!)表达式其实很简单...

    大部分人对ae表达式是望而却之,感觉很难,无从下手,网上的教程也是层次不齐,很难找到好的教程跟着学.于是呢,搜罗全网,整理了一份最全的最实用的ae表达式教学.也算是一个对自己的总结. 下面解决几个问题 ...

  3. 【AE表达式】300多个人名正从宇宙中飞来……

    问题 数量级的问题: 昨天我朋友问:要做三百多个人名(文本)从宇宙深处飞出来的效果,怎么处理? 对于这样的需求,做 AE 包装的小伙伴们都不陌生,就是 3D文本层摆位置,打个相机穿梭一下.没错,对于几 ...

  4. 【AE表达式】下载的模板表达式报错?大多数都是小问题!

    今天要说的是一个很小的问题,新手可能经常遇到:你辛苦找到的模板,打开以后结果显示黄叹号"此项目包含表达式错误--",这时候不要慌不要乱,模板中的表达式报错通常都是非常简单的小问题. ...

  5. 【AE表达式】以插值方法代替关键帧

    在<[AE表达式]更好的动画时间控制>这篇文章中说过我比较不是很喜欢用关键帧来控制动画,这是有一定条件的.使用表达式控制动画更多的是强调复用性,比如你拿到我的工程文件,不管是显示的内容.尺 ...

  6. 【转载】AE 表达式精通大法

    本文是转自 设计树 的一篇文章,我对文章进行了重新排版,并标注了重点 原文地址 -- AE表达式精通大法 以下是正文部分: AE 表达式一直是大家学习 AE 过程中的一道坎,涉及代码网上教程资源又不多 ...

  7. Confluence 6 查看内容索引概要

    内容索引,通常也被称为查找索引,这个索引被用来在 Confluence 中支持查找.这个索引同时也被其他的一些功能使用,例如在归档邮件中构建邮件主题,View Space Activity 的特性和将 ...

  8. 2.Lucene3.6.2包介绍,第一个Lucene案例介绍,查看索引信息的工具lukeall介绍,Luke查看的索引库内容,索引查找过程

     1  Lucen目录介绍 2  lucene-core-3.6.2.jar是lucene开发核心jar包 contrib  目录存放,包含一些扩展jar包 3  案例 建立第一个Lucene项目 ...

  9. java8中的lambda表达式实用详解

    java8中的lambda表达式实用详解 1. lambda简介 ​ Lambda 表达式(lambda expression)是一个匿名函数,Lambda表达式基于数学中的λ演算得名,直接对应于其中 ...

最新文章

  1. Scala error: type mismatch; found : java.util.List[?0] required: java.util.List[B]
  2. ajax大数据导入的一系列问题处理
  3. PHP的安装与设置——windos
  4. 《SAS编程与数据挖掘商业案例》学习笔记之三
  5. 操作系统——缓冲区溢出
  6. hacktoberfest_我刚刚得到了免费的Hacktoberfest衬衫。 这是获取您的商品的快速方法。
  7. mysql 热切换_热璞HotDB学习篇—如何基于MySQL进行数据高可用
  8. 《Linux内核设计与实现》读书笔记(12)--- 内存管理(2)
  9. cad lisp 背景遮罩_CAD背景遮罩,让文字和图形不在重叠!
  10. 批量替换_【脚本】AE照片墙模板图片批量替换脚本Multi Replacer
  11. 1 linux网络诊断命令工具
  12. torch.ones,normal,max
  13. HSV颜色识别demo
  14. mysql官网下载驱动包
  15. 标签打印软件如何制作图文标签
  16. oracle sqlldr原理,oracle sqlldr 参数说明
  17. 公众号和订阅号的区别
  18. 创业十年的感悟,创业者首先要让自己活下去
  19. WPF设置当前激活窗体(前景窗体)
  20. 8b/10b编码技术系列(二):Disparity、RD、8b/10b编码

热门文章

  1. oracle column ambiguously defined
  2. Python-用户自定义函数的定义、调用、引用、装饰器
  3. Excel无法编辑单元格,如何撤销工作表或工作簿密码
  4. 日历生成---java 代码
  5. 1619C. Wrong Addition
  6. 虚拟机我的计算机那里打不开,vmware虚拟机打不开怎么办(目前最完美的解决法)...
  7. 基于matlab的循环卷积,利用MATLAB实现循环卷积
  8. 华尔街之狼-贝尔福特
  9. Docker Swarm使用NFS作为共享存储
  10. access2013数据库实验笔记_二级Access数据库备考笔记之使用查询向导