Photoshop插件-动作相关概念-ActionList-ActionDescriptor-ActionList-动作执行加载调用删除-PS插件开发

Photoshop插件-动作相关概念-ActionList-ActionDescriptor-ActionList-动作执行加载调用删除-PS插件开发PS 动作是什么 是一组操作步骤的组合 多个步骤集合成一两步操作完成复杂的操作 在 PS 内 是通过动作面板进行管理 录制 编辑 加载和执行 如下图所示 该对象提供了一种字典式的机制 用于将数据存储为键值对 它可用于对 Photoshop 的低级访问 许多配置文件使用序列化操作描述符来表示其数据 例如 用于在 Application playbackPara 中封装播放选项 并由 Application getCustomOpt 该对象提供了一种用于存储数据的数组式机制

1.简介

  PS动作是什么?是一组操作步骤的组合,多个步骤集合成一两步操作完成复杂的操作。在PS内,是通过动作面板进行管理,录制,编辑,加载和执行。如下图所示:
在这里插入图片描述

2.动作相关概念

2.1.ActionDescriptor

  该对象提供了一种字典式的机制,用于将数据存储为键值对。 它可用于对 Photoshop 的低级访问。许多配置文件使用序列化操作描述符来表示其数据。 例如,用于在 Application.playbackParameters 中封装播放选项,并由Application.getCustomOptions()。

2.2.ActionList

  该对象提供了一种用于存储数据的数组式机制。 它可用于对 Photoshop 的低级访问。当存储相同类型的数据时,这个对象是理想的。 列表中的所有项目必须属于同一类型。 您可以使用诸如 putBoolean() 之类的“put”方法来附加新元素,并且可以使用 clear() 清除整个列表,但不能以其他方式修改列表。注意:ActionList 对象是 Action Manager 功能的一部分。 有关使用动作管理器的详细信息,请参阅 Photoshop CC 脚本指南。

2.3.ActionReference

  此对象提供有关操作所指内容的信息。 例如,当提到某物的名称时,您可能会使用 keyName。 引用还需要知道您指的是什么名称。 在这种情况下,您可以使用 classDocument 作为文档名称或使用 classLayer 作为图层名称。 它可用于对 Photoshop 的低级访问。包含与 ActionDescriptor 关联的数据。

3.范例

3.1.加载动作

  将动作文件加载至面板,代码如下所示:

app.load(File("C:\\2.atn")); 

3.2.执行动作

  调用函数执行对应组和对应名称函数,代码如下所示:

play_action("默认动作", "四分颜色"); //play_action("默认动作", "四分颜色") // Perform the whole action// 执行整个动作 //play_action("默认动作", "四分颜色", 4, true) // Complete all from the beginning of the command number 4// 从命令编号4 的开头全部完成 //play_action("默认动作", "四分颜色", 5, false) // Will execute only command number 5// 仅执行命令编号5 //cmd_number - the index of the command, ( starts from 1 ) function play_action(set, action, cmd_number, allow_continue) { 
    try { 
    var d = new ActionDescriptor(); var r = new ActionReference(); if (typeof(cmd_number) == "number") r.putIndex( charIDToTypeID( "Cmnd" ), cmd_number ); r.putName( charIDToTypeID( "Actn" ), action ); r.putName( charIDToTypeID( "ASet" ), set ); d.putReference( charIDToTypeID( "null" ), r ); if (typeof(allow_continue) == "boolean") d.putBoolean( charIDToTypeID( "Cntn" ), allow_continue ); executeAction( charIDToTypeID( "Ply " ), d, DialogModes.NO ); } catch(e) { 
    alert(e); } } 

3.3.非加载执行动作文件中动作

  通过非加载方式,执行动作文件中的动作,代码流程较长,有专门博文介绍。https://anjingzhi.blog.csdn.net/article/details/

3.4.删除动作集

  通过名称删除动作集。代码如下:

delete_actionset("组 1"); function delete_actionset(set) { 
    try { 
    var idDlt = charIDToTypeID( "Dlt " ); var desc24 = new ActionDescriptor(); var idnull = charIDToTypeID( "null" ); var ref5 = new ActionReference(); var idASet = charIDToTypeID( "ASet" ); ref5.putName( idASet, set ); desc24.putReference( idnull, ref5 ); executeAction( idDlt, desc24, DialogModes.NO ); } catch(e) { 
    alert(e); } } 

3.5.删除动作

  通过动作集和动作名称删除动作。代码如下:

delete_action("组 1","动作 1"); function delete_action(set,action) { 
    try { 
    var idDlt = charIDToTypeID( "Dlt " ); var desc6 = new ActionDescriptor(); var idnull = charIDToTypeID( "null" ); var ref3 = new ActionReference(); var idActn = charIDToTypeID( "Actn" ); ref3.putName( idActn, action ); var idASet = charIDToTypeID( "ASet" ); ref3.putName( idASet, set); desc6.putReference( idnull, ref3 ); executeAction( idDlt, desc6, DialogModes.NO ); } catch(e) { 
    alert(e); } } 

4.作者寄语

  合理的脚本代码可以有效的提高工作效率,减少重复劳动。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/175925.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月26日 下午11:05
下一篇 2026年3月26日 下午11:06


相关推荐

  • phpstrom 2021.12激活吗(JetBrains全家桶)「建议收藏」

    (phpstrom 2021.12激活吗)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~1435QFILVV-eyJsaWNlb…

    2022年3月30日
    42
  • 成本=固定成本+可变成本_可避免固定成本是机会成本吗

    成本=固定成本+可变成本_可避免固定成本是机会成本吗1、固定成本和可变成本根据成本费用与产量的关系可将总成本费用分为:可变成本;是指随着产品产量的增减而成正比例变化的各项费用。固定成本:是指不随产品产量的变化的各项成本费用。半可变(或半固定)成本:有些成本费用属于半可变成本,如不能熄灭的工业炉的燃料费等。工资、营业费用和流动资金利息等也都可能既有可变因素,又有固定因素。必要时需将半可变(或半固定)成进一步分解为可变成本和…

    2025年8月20日
    3
  • 虚拟机usb控制器_显示器上的USB接口

    虚拟机usb控制器_显示器上的USB接口windows下usb显示器的实现及效果

    2022年8月21日
    8
  • java文件转码工具-native2ascii.exe命令简介

    java文件转码工具-native2ascii.exe命令简介native2ascii.exe简介java的转码工具,需要java.dll动态库和相关程序才能执行。native2ascii.exe是Java的一个文件转码工具,是将特殊各异的内容转为用指定的编码标准文体形式统一的表现出来,它通常位于JDK_home\bin目录下,安装好JavaSE后,可在命令行直接使用native2ascii命令进行转码。JDK自带的工具native2ascii可以将uncode编码的文件转换为本地编码的文件,但是不能批量转换文件。native2ascii.

    2025年9月4日
    9
  • StretchBlt用法[通俗易懂]

    StretchBlt用法[通俗易懂]首先定义protected: BITMAPbmp;其次实现///////////////////////////////////////////////////////////////////////////////CExamineViewdrawingvoidCExamineView::OnDraw(CDC*pDC){ CExamineDoc*pDoc=GetDo

    2025年6月13日
    3
  • python测试框架unittest如何设置用例优先级_python 的 unittest 测试框架中的测试依赖怎么解决呢…[通俗易懂]

    python测试框架unittest如何设置用例优先级_python 的 unittest 测试框架中的测试依赖怎么解决呢…[通俗易懂]好啦,问题已解决,谢谢各位啦,感谢各位提出的思路,感谢@xiaoj(杰)和@keke在这里做个总结:xiaoj(杰)的方法defskipTest(value):defdeco(function):defwrapper(self,*args,**kwargs):ifnotgetattr(self,value):self.skipTest(‘跳过用例’)else:functio…

    2022年8月31日
    6

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号