如何通过Jsx在Photoshop中选择“透明形状图层”

时间:2019-12-04 00:30:22

标签: jsx photoshop

我相信我可以使用JSX调用Action脚本来做到这一点,但是我认为如果我可以直接通过JSX进行操作,这样做会更有效率。不幸的是,我在Adobe的JavaScript脚本参考pdf中找不到关于此选项的任何信息。

this option here :"Transparency Shapes Layer"

到目前为止,我的想法是检查图层是否处于LinearDodge模式,如果要取消选中“透明形状图层”
(我是新手,所以是出于测试目的):

var doc= app.activeDocument;

for (i=0 ; i < doc.layers.length; i++) {
if (doc.layers[i].blendMode == BlendMode.LINEARDODGE) {
        //alert ('found it');
        //doc.layers[i].blendMode = BlendMode.MULTIPLY;
        //doc.activeLayer=doc.layers[i];
          }

}

1 个答案:

答案 0 :(得分:0)

我相信通过说动作脚本来表示动作管理器代码,而用JSX来表示Photoshop DOM?无论如何,Action Manager代码通常比DOM效率更高(高达数千倍。当然,看起来像是在召唤一个恶魔),并且如果您在JS Scripting Reference中找不到某些内容,则此功能可能不存在DOM:有时AM是唯一的解决方案。只需将丑陋的代码包装在一个函数中,然后将其隐藏在某个地方即可。或创建自己的DOM。

changeTransparencyShapesLayer(false)

function changeTransparencyShapesLayer(value)
{
  var desc = new ActionDescriptor();
  var ref = new ActionReference();
  ref.putEnumerated(charIDToTypeID('Lyr '), charIDToTypeID('Ordn'), charIDToTypeID('Trgt'));
  desc.putReference(charIDToTypeID('null'), ref);
  var descOption = new ActionDescriptor();
  descOption.putBoolean(stringIDToTypeID('transparencyShapesLayer'), value);
  desc.putObject(charIDToTypeID('T   '), charIDToTypeID('Lyr '), descOption);
  executeAction(charIDToTypeID('setd'), desc, DialogModes.NO);
}