1

我正在编写generator插件,并使用方法获取文档结构generator.getDocumentInfo()。它返回document包含layer树结构对象的对象。document对象有属性document.id,每一层都有属性layer.id

目标:我想隐藏图层 - 我只知道文档 ID 和图层 ID。

问题:我发现在生成器插件中隐藏图层的唯一方法是evaluateJSXString()方法。这很好,但我不知道如何按 id 和按 id 访问文档。根据http://wwwimages.adobe.com/www.adobe.com/content/dam/Adobe/en/devnet/photoshop/pdfs/photoshop-cc-javascript-ref.pdf文档没有id属性,图层也没有id属性. 我发现的app.documents是一个文档数组(但索引不是 id)并且app.document[i].layers是一个层数组,但它只包含顶层层,每个顶层层都包含子层。

我看到的唯一选择是编写 JSX 脚本,该脚本将首先遍历app.documents数组以查找具有例如匹配文件名的 doc,然后它将搜索document.layers树结构中的层。

  1. 还有其他选择吗?
  2. 使用 generator.getDocumentInfo() 时生成器如何提供文档和图层 ID?是一些生成器内部符号吗?
4

1 回答 1

1

我看到这是一个老问题有同样的问题。我能够使用生成器的方法提出解决方案evaluateJSXStringevaluateJSXString您可以在生成器插件中使用 with执行扩展脚本。这里不涉及循环。就在layerID.

注意:layerID是一个保存层 ID 的变量,它连接到要评估的字符串。

要显示图层:

  var changeVisibilityString = " var ref = new ActionReference(); \
                                  ref.putIdentifier(charIDToTypeID('Lyr '), " + layerID + " ); \
                                  var desc = new ActionDescriptor(); \
                                  desc.putReference(charIDToTypeID('null'), ref); \
                                  desc.putBoolean(charIDToTypeID('MkVs'), false); \
                                  executeAction( charIDToTypeID('Shw '), desc);"

    generator.evaluateJSXString(changeVisibilityString);

要隐藏图层:

  var changeVisibilityString = " var ref = new ActionReference(); \
                                  ref.putIdentifier(charIDToTypeID('Lyr '), " + layerID + " ); \
                                  var desc = new ActionDescriptor(); \
                                  desc.putReference(charIDToTypeID('null'), ref); \
                                  desc.putBoolean(charIDToTypeID('MkVs'), false); \
                                  executeAction( charIDToTypeID('Hd  '), desc);"

    generator.evaluateJSXString(changeVisibilityString);
于 2014-07-07T21:31:09.623 回答