After Effects / ExtendScript:如何使用库和导入.jsx文件?

13

我对 After Effects 脚本编写是新手,但对浏览器中的 JavaScript 有很多经验。

  1. 如何导入 .jsx 文件?
  2. 我可以使用 js 库例如 underscore.js 等吗?
  3. 有哪些关于 AE 脚本编写的好资源?(最好是信息图形项目)
1个回答

27
  1. 在脚本旁边包含 .jsx 文件

使用:

#include "includeme.jsx"

编辑2:

您还可以使用以下语法包含文件:

//@include "includeme.jsx"

在我看来,这是更好的方法。它不会破坏代码检查器,并且更符合JavaScript的风格。

  1. 您可以使用普通的JavaScript(ES3语法)。如果您包含的库使用一些特定于浏览器的JavaScript(如console.log()),则会出现错误。

  2. 最佳资源是After Effects脚本指南。还有许多开源脚本可以在http://aescripts.com上查看。

编辑1:您也可以像这样包含文件。

var path = ((File($.fileName)).path); // this is the path of the script
// now build a path to another js file
// e.g. json lib https://github.com/douglascrockford/JSON-js
var libfile = File(path +'/_libs/json2.js');
if(libfile.exists){
  $.evalFile(libfile);
}

编辑3:原链接指向的AE脚本文档已经失效,已更新链接


谢谢Fabian!我之前尝试过那个方法,但是没成功。不确定哪里做错了。 - dani
//@ 语法对于其他预处理器指令,例如 #target indesign#strict on 是否有效? - Sturm
1
@Sturm 我认为 //@target 可以用。//@strict 我不确定。你为什么不试一下然后回来报告呢?;) - fabianmoronzirfas
1
@fabianmoronzirfas,我看不出任何区别。删除那行、将其更改为#strict off等操作都无效。当该命令设置为“on”时,脚本中尝试写入只读属性时应抛出运行时错误。我在脚本顶部放置了一行app.activeScriptUndoMode = UndoModes.AUTO_UNDO;来测试它。然而,无论#strict行是什么,我都会收到错误提示。 - Sturm
可怜的 ExtendScript,某些部分已经崩溃了。感谢您的报告。 - fabianmoronzirfas
1
现代化的AE脚本指南链接,因为答案中的链接已经失效:https://ae-scripting.docsforadobe.dev/index.html - cvbattum

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接