【问题标题】:AE JavaScript finding Layer Object when none is givenAE JavaScript 在没有给出图层对象时查找图层对象
【发布时间】:2014-10-31 03:29:50
【问题描述】:

尝试创建一个 3D 形状的孩子以 0 到 3 秒的加速速度旋转,我使用了以下脚本

if (time < 3)
  Math.pow(time, 2)*30;

这给了我以下错误

After Effects 警告:Layer 类型的对象在数字的位置找到, 需要数组或属性

表达式已禁用。

第 0 行发生错误。

比较:'主要'

层:15('蓝色')

属性:'Y 旋转'

Comp 名称、层名称和属性名称均有效。他们指向我试图编辑的属性。 然而,令我困惑的是,我使用以下代码解决了这个问题。

ctime = time;
if (ctime < 3)
  Math.pow(ctime, 2)*30;

代码现在按预期工作,我不知道为什么。

【问题讨论】:

  • 发布您的完整代码,罪魁祸首不在眼前。此外,您似乎没有使用Math.pow 的结果。
  • @Ultimater 是完整的代码。这是 After Effects 中使用的表达式片段,它使用最后一行的返回值作为 scipt 所针对的任何对象的输入,在本例中是名为 Blue 的图层的 Y 旋转。
  • @Ultimater 我有一半相信这个问题与 AE(或它的 JS 实现)有关,因此是标签和标题。

标签: javascript after-effects


【解决方案1】:

如果条件为假,则两者将不同,因为没有最后一条语句可供使用。
试试:(time &lt; 3)?Math.pow(time, 2)*30:time;

【讨论】:

  • 刚刚测试,我可以确认 AE 使用的是 ctime=time;如果 if 子句失败,则作为第二个代码的值。将使用带有 else 0 的代码;为了可读性。谢谢。另外,现在我觉得自己很愚蠢。
【解决方案2】:

Math.pow(time^2*30); 只是糟糕的代码。 Math.pow 需要两个参数,而您只给了它一个。还有^是位运算符,JavaScript中没有升幂运算符,需要使用Math.pow。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-27
    • 1970-01-01
    • 2020-01-27
    • 2017-02-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多