0

在 After Effects 脚本中,如果您希望脚本能够停靠在程序的工作区中,据我所知,唯一的方法是使用这样的资源字符串:

var res = "Group{orientation:'column', alignment:['fill', 'fill'], alignChildren:['fill', 'fill'],\
    group1: Group{orientation:'column', alignment:['fill', ''], alignChildren:['fill', ''],\
        button1: Button{text: 'Button'},\
    },\
}";
                
myPanel.grp = myPanel.add(res);

上面的代码在组(“group1”)中创建了一个带有一个按钮(“button1”)的脚本 UI。

我想知道创建相同资源字符串的其他方法。是否可以使用 JSON 对象然后对其进行字符串化?

我知道它可以以某种方式完成,因为我检查了可停靠的 Duik Bassel 脚本,例如,添加了如下元素:

var button1 = myPal.add( 'button' );

但我不明白自己该怎么做。

TL;DR:我想制作一个可停靠的 scriptUI,而不是一次编写一个巨大的字符串,而是一点一点地编写,就像一个浮动脚本。

4

2 回答 2

2

UI 容器元素有一个add()方法允许您向它们添加其他 UI 元素,并且您可以将它们视为普通对象。

var grp = myPanel.add("group");
grp.orientation = "column";
grp.alignment = ['fill', 'fill'];
grp.alignChildren = ['fill', 'fill'];

var group1 = grp.add("group");
…
var button1 = group1.add("button");
button1.text = 'Button'

更多详细信息和示例:https ://extendscript.docsforadobe.dev/user-interface-tools/types-of-controls.html#containers

还值得一试https://scriptui.joonas.me/这是一个可视化的 scriptUI 界面构建器。您必须对它生成的代码做一些工作才能获得 AE 面板,但这并不难。

于 2021-10-12T05:28:06.517 回答
1

extendscript 仍然使用 20 世纪版本的 JavaScript,它没有内置 JSON,但我已经成功地使用了 JSON polyfill。

我使用json2.js将结构化数据输入和输出 Illustrator,它运行良好,但我可以看到现在有一​​个 json3.js,无论出于何种原因,它可能会更好。这个stackoverflow问题解决了这些差异。

要将另一个 .js 文件(例如 polyfill)加载到您的脚本中,您需要执行类似的操作

var scriptsFolder = (new File($.fileName)).parent; //  hacky but effective
$.evalFile(scriptsFolder + "/lib/json2.js"); // load JSON polyfill

这些文件位置在其他 Adob​​e 应用程序中可能有所不同。不确定 AfterEffects 中的内容。我似乎记得 InDesign 有不同的脚本位置。当然,您也可以对路径进行硬编码。

祝你好运!

于 2021-10-11T12:23:35.457 回答