ps, ai, ae插件都可以用html和js开发了
Adobe ScriptUI 学习之旅:从标记语言到跨应用交互
1. 缘起:对 Duik 插件的探索
作为 After Effects 用户,我一直对 Duik 这个强大的角色动画插件库充满好奇。Duik 提供了丰富的骨骼动画工具,极大地简化了角色动画的制作流程。然而,当我尝试深入学习它的代码结构时,却遇到了一些挑战:
- 文档收费:完整的 Duik 文档需要付费购买
- 代码结构问题:Duik 没有采用模块化设计,而是大量使用全局变量作为功能实现方式,导致代码可读性差,难以维护和扩展
- 学习曲线陡峭:对于初学者来说,理解其代码逻辑较为困难
2. 寻找官方文档的历程
为了更好地理解 Adobe 脚本开发,我开始从 After Effects 的帮助菜单中寻找相关文档。有趣的是,Adobe 官方并没有直接提供完整的 ScriptUI 文档,而是在帮助菜单的链接中指向了第三方资源:
- ScriptUI 文档:extendscript.docsforadobe.dev - 这是 Adobe 应用通用的 UI 构建工具
- After Effects 脚本指南:ae-scripting.docsforadobe.dev - 专注于 AE 相关的脚本开发
通过这些文档,我了解到 ScriptUI 不仅适用于 After Effects,还可以在其他 Adobe 应用中使用,并且支持跨应用交互,这为我的开发思路打开了新的大门。
3. 痛点:ScriptUI 构建的复杂性
在学习过程中,我发现 ScriptUI 的构建方式相对繁琐:
- 需要通过脚本代码手动创建每个 UI 组件
- 布局管理需要编写大量代码
- 修改 UI 结构时需要调整多处代码
Duik 虽然抽象了一些方法来简化这个过程,但对于我来说仍然不够直观。我开始思考:是否可以使用更简洁的标记语言来描述 UI,然后编译成 ScriptUI 代码?
4. 解决方案:标记语言到 ScriptUI 的转换
基于这个想法,我创建了一个代码仓库,实现了从 HTML 标记语言到 Adobe ScriptUI JSX 代码的转换。在开发初期,我考虑过使用 Vue Compiler 来处理标记语言,但后来发现 Vue 支持的特性和 HTML 差别较大,而且我们并不需要 HTML 的全部功能,因此最终决定自己实现一个轻量级的转换引擎。
核心功能
- HTML 标记语言支持:使用熟悉的 HTML 标签来描述 UI 结构
- 组件映射:将 HTML 标签映射到对应的 ScriptUI 组件
- 事件处理:支持内联 onClick 事件绑定
- 实时编译:通过文件监视器实时将 HTML 变更编译为 JSX
项目结构
项目采用 monorepo 结构,包含三个核心包:
- adobe-scriptui-html-to-jsx:核心转换引擎,负责将 HTML 标记转换为 ScriptUI JSX 代码
- adobe-scriptui-watcher:文件监视器,监视 HTML 文件变化并自动触发编译
- adobe-scriptui-ae-helper:示例应用,展示了如何使用该工具构建实际的 After Effects 助手工具
这种拆包设计的目的是为了模块化和可扩展性,现在主要用于 After Effects,但未来可以轻松扩展到其他 Adobe 应用中。
5. 实际应用:AE 助手工具
通过这个工具,我构建了一个功能丰富的 After Effects 助手工具,包含:
- 弹性表达式:为属性添加弹性动画效果
- 常用表达式:快速应用 loop、wiggle、random 等常用表达式
- AI 文件导入:支持从 Illustrator 导入文件到 After Effects
- 用户友好的界面:通过 HTML 标记语言快速构建和修改 UI
6. 未来展望
这个项目只是我对 Adobe 脚本开发探索的开始。未来,我计划:
业务调研与痛点解决
- 表达式管理系统:针对设计师使用表达式的痛点,开发一个更智能的表达式管理系统。目前设计师们通常需要从文本文件中复制粘贴表达式,修改参数困难,应用到其他属性时容易出错,最终只好放弃使用表达式而回到关键帧动画。
- 可视化表达式编辑器:开发一个可视化的表达式编辑器,让设计师可以通过界面调整参数,而不需要直接编写代码。
功能抽象
- 跨应用组件库:构建一套适用于所有 Adobe 应用的组件库
- 模板系统:创建可复用的 UI 模板
- 跨应用工作流:实现不同 Adobe 应用之间的无缝交互
开发流程优化
- AI 辅助开发:利用 AI 工具生成初始代码,然后根据文档进行调整
- 可视化编辑器:开发一个可视化 UI 编辑器,进一步简化开发流程
- 社区贡献:鼓励社区贡献,共同完善这个工具
7. 结语
通过对 Adobe ScriptUI 的学习和探索,我不仅解决了 UI 构建的痛点,还为 Adobe 脚本开发提供了一种新的思路。标记语言到 ScriptUI 的转换,使得 UI 开发变得更加直观和高效。
虽然这个项目还在不断发展中,但它已经展示了如何通过创新的方法来简化复杂的开发流程。我相信,随着更多功能的加入和社区的参与,这个工具将成为 Adobe 脚本开发者的有力助手,同时也能帮助设计师们更轻松地使用和理解表达式,提升动画制作的效率和质量。
提示:如果你也对 Adobe 脚本开发感兴趣,欢迎访问我的 GitHub 仓库 adobe-script-ui-helper,一起探索 Adobe 脚本开发的无限可能!