我知道这适用于笔画,但尝试使用内部阴影。 经过这些设置
我认为代码是这样的
tell application id "com.adobe.Photoshop"
activate
tell current document
apply layer style current layer using "73 Px Inner Shadow 15% Fill Opacity"
end tell
end tell
答案 0 :(得分:2)
我真的认为最好使用JavaScript(你可以从AS调用,当然是文本或文件)使用相当迟钝但功能强大的ActionDescriptor方法。最好的(可以说是唯一的)方法是下载Scripting Listener插件(参见:http://forums.adobe.com/message/5428603)并使用它来解析和窃取代码并将这些部分放在您自己的JavaScript代码中。然后可以单独使用此代码(从PS中调用的.jsx文件)或通过从AppleScript调用JS代码。
例如,下面是一个脚本(可以在PS CC中按原样运行)直接从Scripting Listener日志中获取,在当前所选图层上创建一个内部阴影,具有以下设置:Blend mode" Darken",rgb color {111,22,3},Opacity 44%,Angle 55度,距离:66像素,Choke:7%,大小:88px(更多信息,以下脚本代码):
// =======================================================
var idsetd = charIDToTypeID( "setd" );
var desc8 = new ActionDescriptor();
var idnull = charIDToTypeID( "null" );
var ref4 = new ActionReference();
var idPrpr = charIDToTypeID( "Prpr" );
var idLefx = charIDToTypeID( "Lefx" );
ref4.putProperty( idPrpr, idLefx );
var idLyr = charIDToTypeID( "Lyr " );
var idOrdn = charIDToTypeID( "Ordn" );
var idTrgt = charIDToTypeID( "Trgt" );
ref4.putEnumerated( idLyr, idOrdn, idTrgt );
desc8.putReference( idnull, ref4 );
var idT = charIDToTypeID( "T " );
var desc9 = new ActionDescriptor();
var idgagl = charIDToTypeID( "gagl" );
var idAng = charIDToTypeID( "#Ang" );
desc9.putUnitDouble( idgagl, idAng, 55.000000 );
var idScl = charIDToTypeID( "Scl " );
var idPrc = charIDToTypeID( "#Prc" );
desc9.putUnitDouble( idScl, idPrc, 100.000000 );
var idIrSh = charIDToTypeID( "IrSh" );
var desc10 = new ActionDescriptor();
var idenab = charIDToTypeID( "enab" );
desc10.putBoolean( idenab, true );
var idMd = charIDToTypeID( "Md " );
var idBlnM = charIDToTypeID( "BlnM" );
var idDrkn = charIDToTypeID( "Drkn" );
desc10.putEnumerated( idMd, idBlnM, idDrkn );
var idClr = charIDToTypeID( "Clr " );
var desc11 = new ActionDescriptor();
var idRd = charIDToTypeID( "Rd " );
desc11.putDouble( idRd, 111.002197 );
var idGrn = charIDToTypeID( "Grn " );
desc11.putDouble( idGrn, 21.999664 );
var idBl = charIDToTypeID( "Bl " );
desc11.putDouble( idBl, 3.003845 );
var idRGBC = charIDToTypeID( "RGBC" );
desc10.putObject( idClr, idRGBC, desc11 );
var idOpct = charIDToTypeID( "Opct" );
var idPrc = charIDToTypeID( "#Prc" );
desc10.putUnitDouble( idOpct, idPrc, 44.000000 );
var iduglg = charIDToTypeID( "uglg" );
desc10.putBoolean( iduglg, true );
var idlagl = charIDToTypeID( "lagl" );
var idAng = charIDToTypeID( "#Ang" );
desc10.putUnitDouble( idlagl, idAng, 120.000000 );
var idDstn = charIDToTypeID( "Dstn" );
var idPxl = charIDToTypeID( "#Pxl" );
desc10.putUnitDouble( idDstn, idPxl, 66.000000 );
var idCkmt = charIDToTypeID( "Ckmt" );
var idPxl = charIDToTypeID( "#Pxl" );
desc10.putUnitDouble( idCkmt, idPxl, 7.000000 );
var idblur = charIDToTypeID( "blur" );
var idPxl = charIDToTypeID( "#Pxl" );
desc10.putUnitDouble( idblur, idPxl, 88.000000 );
var idNose = charIDToTypeID( "Nose" );
var idPrc = charIDToTypeID( "#Prc" );
desc10.putUnitDouble( idNose, idPrc, 0.000000 );
var idAntA = charIDToTypeID( "AntA" );
desc10.putBoolean( idAntA, false );
var idTrnS = charIDToTypeID( "TrnS" );
var desc12 = new ActionDescriptor();
var idNm = charIDToTypeID( "Nm " );
desc12.putString( idNm, "Linear" );
var idShpC = charIDToTypeID( "ShpC" );
desc10.putObject( idTrnS, idShpC, desc12 );
var idIrSh = charIDToTypeID( "IrSh" );
desc9.putObject( idIrSh, idIrSh, desc10 );
var idLefx = charIDToTypeID( "Lefx" );
desc8.putObject( idT, idLefx, desc9 );
executeAction( idsetd, desc8, DialogModes.NO );
////////////////end script///
这有助于澄清一些隐秘代码所代表的内容:http://www.pcpix.com/photoshop/char.htm
[编辑2017年5月] 上面的链接已经死了。信息现在位于https://pastebin.com/h9bK3m8D,原件通过"支路机器存档":https://web-beta.archive.org/web/20140709161028/http://www.pcpix.com/photoshop/char.htm
如果你采用这种方式(实际上,我认为它是目前对某些操作实现这种级别控制的唯一方法),你应该知道日志需要存在于桌面上,并且不加选择地填满,所以我最终定期清空(和/或关闭它)。我意识到你在AS中可能比在JS中更舒服,但是如果你学习如何编写JS脚本(甚至使用AS动态编写它们),你就会变得几乎无所不能(并且有很大的力量来承担很大的责任)。有时候你可以取出部分日志编写的代码并使代码更加高效"但是(显然,也许)错误可能会让你破坏代码和一般错误。
[edit] 对于传输模式,最好使用stringIDToTypeID()方法,而不是charIDToTypeID()方法。没有说明原因,我只是说它更容易。只需使用" camelCase"传输模式的版本,la:
var idDrkn = stringIDToTypeID( "darken" );
或
//changed variable name to better reflect a generic
var transferModeID = stringIDToTypeID( "colorDodge" );
desc10.putEnumerated( idMd, idBlnM, transferModeID );