如何在没有大字符串的情况下创建资源字符串?
How can I create the resource string without a big string?
在 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);
上面的代码创建了一个脚本 UI,在组(“group1”)中有一个按钮(“button1”)。
我想知道创建相同资源字符串的其他方法。是否可以使用 JSON 对象然后将其字符串化?
我知道它可以以某种方式完成,因为我已经检查了可停靠的 Duik Bassel 脚本,例如,添加了如下元素:
var button1 = myPal.add( 'button' );
但是我自己搞不懂怎么做。
TL;DR: 我想制作一个可停靠的脚本UI,而不是一下子写一个巨大的字符串,而是一点一点地写,就像一个浮动脚本。
extendscript 仍然使用 javaScript 的 20 世纪版本,它没有内置 JSON,但我已经成功地使用了 JSON polyfill。
我用 json2.js to get structured data in and out of Illustrator, and it worked beautifully, but I can see there's now a json3.js which might be better for whatever reason. This Whosebug question 解决了差异。
要将另一个 .js 文件(例如 polyfill)加载到您的脚本中,您需要执行以下操作
var scriptsFolder = (new File($.fileName)).parent; // hacky but effective
$.evalFile(scriptsFolder + "/lib/json2.js"); // load JSON polyfill
这些文件位置在其他 Adobe 应用程序中可能有所不同。不确定它在 AfterEffects 中会是什么。我似乎记得 InDesign 有一个不同的脚本位置。当然,您也可以对路径进行硬编码。
祝你好运!
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/,这是一个可视化脚本UI 界面生成器。您必须对它生成的代码做一些工作才能获得 AE 面板,但这并不难。
在 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);
上面的代码创建了一个脚本 UI,在组(“group1”)中有一个按钮(“button1”)。
我想知道创建相同资源字符串的其他方法。是否可以使用 JSON 对象然后将其字符串化?
我知道它可以以某种方式完成,因为我已经检查了可停靠的 Duik Bassel 脚本,例如,添加了如下元素:
var button1 = myPal.add( 'button' );
但是我自己搞不懂怎么做。
TL;DR: 我想制作一个可停靠的脚本UI,而不是一下子写一个巨大的字符串,而是一点一点地写,就像一个浮动脚本。
extendscript 仍然使用 javaScript 的 20 世纪版本,它没有内置 JSON,但我已经成功地使用了 JSON polyfill。
我用 json2.js to get structured data in and out of Illustrator, and it worked beautifully, but I can see there's now a json3.js which might be better for whatever reason. This Whosebug question 解决了差异。
要将另一个 .js 文件(例如 polyfill)加载到您的脚本中,您需要执行以下操作
var scriptsFolder = (new File($.fileName)).parent; // hacky but effective
$.evalFile(scriptsFolder + "/lib/json2.js"); // load JSON polyfill
这些文件位置在其他 Adobe 应用程序中可能有所不同。不确定它在 AfterEffects 中会是什么。我似乎记得 InDesign 有一个不同的脚本位置。当然,您也可以对路径进行硬编码。
祝你好运!
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/,这是一个可视化脚本UI 界面生成器。您必须对它生成的代码做一些工作才能获得 AE 面板,但这并不难。