Extension Builder 这个工具,可以为我们 利用as3的语法调用ps里面的功能,这样一来,我们就可以用熟悉的语法去写一下扩展工具。photoshop 脚本还可以支持jsx 等脚本,但是调试起来没事呀Extension Builder 那么方便。
psd2swf 里面的一个工具,提供了一个快速创建组件的文件夹,那么我们利用as3 编写一下,仅仅需要几行代码就可以完成这个任务了。但是as3 方面文档资料比较少,因此还是看js 哪个脚本进行猜测。
js : http://cssdk.host.adobe.com/sdk/1.0/docs/WebHelp/app_notes/ps_doc_model.htm
as3 :http://cssdk.host.adobe.com/sdk/1.0/docs/WebHelp/references/csawlib/package-summary.html
一 、创建一个extension Project
二 填写后工程名,选择我们要进行扩展的cs 系列的程序
创建Extension project后,会自动生成一段代码,而对应不同的cs 系列产品,可以对其进行编写脚本。这次我们选择ps,那是因为个人想尝试创建一组文件夹。当初查询文档的时候,一直以为有Group 就是创建一个组,然而发现layerSets 才是创建一个组文件夹。
var app:Application = Photoshop.app; 就是程序的入口
你可以 使用 文档 属性来创建一个200x200文档。
var doc:Document=app.documents.add(200,200);//创建一个 大小为 200x200的文档
但是在没有创建文档之前调用 activeDocument 会报错,因此这个就需要对其做一个判断。否则会报null的情况。
LayerSets 里面提供了一些方法,这些方法可以参考文档,而刚开始接触这个也是猜测的,但是这个足够个人当前需求去满足创建一个组文件夹。
调试的时候,在菜单 window--》首先项 可以看到cs extendsion builder 这一项,然后根据自己的安装路径进行修正,这样flash builder 就能断点和调试了。 看起来很傻瓜的设置。
package
{
import com.adobe.csawlib.photoshop.Photoshop;
import com.adobe.photoshop.*;
public class pssPhotoshop
{
public static function run():void
{
var app:Application = Photoshop.app;
if(app.activeDocument)
{
var layerG:LayerSet=app.activeDocument.layerSets.add();
layerG.name="Button_{name}";
var layer_disable:LayerSet=layerG.layerSets.add();
var layer_down:LayerSet=layerG.layerSets.add();
var layer_over:LayerSet=layerG.layerSets.add();
var layer_normal:LayerSet=layerG.layerSets.add();
layer_normal.name="normal"
layer_over.name="over";
layer_down.name="down";
layer_disable.name="disable";
}
}
}
}
<?xml version="1.0" encoding="utf-8"?>
<csxs:CSExtension xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:csxs="com.adobe.csxs.core.*" applicationComplete="appComplete()">
<fx:Script>
<![CDATA[
import com.adobe.csxs.core.CSInterface;
[Bindable]
private var hostName:String = HostObject.mainExtension;
public function appComplete():void{
CSInterface.instance.autoThemeColorChange = true;
}
]]>
</fx:Script>
<s:VGroup height="100%" width="100%" verticalAlign="middle" horizontalAlign="center">
<s:Button label="Run PS code" click="pssPhotoshop.run()" enabled="{hostName.indexOf('photoshop') > -1}"/>
</s:VGroup>
</csxs:CSExtension>
flex 预览之后,可以产生这个组文件夹了。看起来是不是很爽?这个api 提供了很多强大的功能。慢慢等挖掘一下吧
准备睡觉去
整个工程样貌,简单就这个小例子而已。