【CEP教程-9】Action Manager从好奇到劝退 - 下篇

【CEP教程-9】Action Manager从好奇到劝退 - 下篇

首先,祝各位新年快乐!今天是2022年的第一天,我没有贪玩,想着要保持文章更新的频度,文章更新周期不要超过2两周,这样才能保证把这个教程顺利完整的写完。在这里祝大家新的一年都顺顺利利,也希望这套教程能够顺畅的完成。

上篇文章我们介绍了如何使用Action Manager来从PS中获取数据,我们深入讲解了ActionDescriptor的组织结构和使用逻辑,本质上和JS开发没有多大区别,我们通过ActionDescriptor, ActionReference, ActionList这3个对象以及他们提供的方法,进行递归遍历,将其中的key和value打印出来,以获取我们需要的数据项。并且我还介绍了如何从宿主全局出发通过对象树分析的方法,挨个将Ps的各个对象和数据进行挖掘,这样你就不需要去猜测某个目标用什么key了,这些key都在对象树的属性当中。如果你仔细研读该文章,并且自己实际动手去尝试了,应该就能够自己尝试的去写一些AM代码了,然后会发现它的功能针对比官方提供的DOM API要丰富强大的多。

这篇文章,我们开始介绍AM三部曲的最后一篇,如何对宿主进行设置操作。把设置放在最后来讲,是因为它相比GET行为,要更难,更不好理解,也更不可预期。所以阅读本篇文章,一定要专注认真,尽量跟随我的思路往下走,我会努力将这套方法一点点剖析出来,尽管如此,也不能确保Ps所有的目标对象都是可以设置成功的,这点你要提前明白。让我们开始吧

阅读更多
【CEP教程-8】Action Manager从好奇到劝退 - 中篇

【CEP教程-8】Action Manager从好奇到劝退 - 中篇

上篇文章我们介绍了Action Manager的入门知识,讲如何通过ScriptListener插件来让Ps输出AM代码为我所用。同时介绍了AM的独特的代码结构,都是源于底层C的转换逻辑,使得对大多数开发者而言,异常晦涩难懂。上篇文章相当于是基础知识的介绍,离真正实际应用还差的很多,基本上你只能通过拷贝Ps输出的代码,自己简单改吧改吧凑合着用,如果Ps没有输出,就无能为力了。

这篇文章,以及下一篇,我们开始介绍AM实战部分,深入了解AM的运作机制,通过一些前人的积累和经验,让我们自己也可以顺藤摸瓜的开始自己写AM代码,实现想要的功能。

对于我们日常想要的操作,无非就是希望从宿主获取一些信息(GET操作),设置宿主的一些状态(SET操作),针对这两个操作,我们分为两篇文章分别介绍,中篇介绍如何从Ps中获取信息,下篇介绍如何设置这些信息。这么安排是有考虑的,一方面相比SET而言,GET其实要相对简单一些(虽然SET有ScriptListener辅助,但离开它确实举步维艰),另外一方面SET部分会用到GET讲的数据结构。

让我们马上开始吧~

阅读更多
【CEP教程-8】Action Manager从好奇到劝退 - 上篇

【CEP教程-8】Action Manager从好奇到劝退 - 上篇

前言

上篇文章我们介绍了JSX的脚本核心 - DOM编程,它是Ps对外提供的一套API,提供了可以通过JS Api来调用宿主核心功能的接口,通过它我们可以完成需要的一些工作,而这也是官方文档提供给我们的有限的可用接口。但是你实际使用过程中就会发现,DOM提供的api太少太少了,大体也就能覆盖你日常需要的40%,剩下的很多需求,都无法通过DOM API来完成。

photoshop dom tree

比如当选中的多图层的时候,你想拿到当前选中的多个图层,通过

1
app.activeDocument.activeLayer

只能拿到其中的一个,无法拿到所有选中的图层。再比如你想通过代码来选中移动工具,或者你想获取到图层的图层叠加效果等等,这些你在DOM API中都找不到相关的信息。于是,通常你就会在网上进行搜索,查找别人是怎么做的,搜着搜着,你可能就会在一些论坛上看到别人贴出来的这样的一坨代码

阅读更多