【发布时间】:2021-03-09 09:50:38
【问题描述】:
我正在尝试使用操作管理器功能来选择图层。 这可以通过使用 dom 来完成,但我想弄清楚为什么它不起作用。 好吧..当所有图层和图层集具有不同的名称时,它就可以工作。但是当有同名的层时,它只选择它找到的第一个。 但是..在从scriptlistener记录的AM代码中,使用了layer.id参数。
我明白为什么我需要一个图层 ID,没有它,它只有图层名称,当有多个同名图层时,这是不够的。但它似乎记录正确,但不播放。
scriptlistener 显示此 layer.id 更改。 但是当我运行侦听器代码时,它会忽略此参数,并且仍然只选择第一个。 您可以在其中输入任何值,并且没有任何区别。为什么会这样?似乎在其他 AM 代码中,有些变量只是没有整体使用。
var idslct = charIDToTypeID( "slct" );
var desc34 = new ActionDescriptor();
var idnull = charIDToTypeID( "null" );
var ref13 = new ActionReference();
var idLyr = charIDToTypeID( "Lyr " );
ref13.putName( idLyr, "Group 4" );
desc34.putReference( idnull, ref13 );
var idMkVs = charIDToTypeID( "MkVs" );
desc34.putBoolean( idMkVs, false );
var idLyrI = charIDToTypeID( "LyrI" );
var list5 = new ActionList();
list5.putInteger( 4 );
desc34.putList( idLyrI, list5 );
executeAction( idslct, desc34, DialogModes.NO );
var idslct = charIDToTypeID( "slct" );
var desc35 = new ActionDescriptor();
var idnull = charIDToTypeID( "null" );
var ref14 = new ActionReference();
var idLyr = charIDToTypeID( "Lyr " );
ref14.putName( idLyr, "Group 4" );
desc35.putReference( idnull, ref14 );
var idMkVs = charIDToTypeID( "MkVs" );
desc35.putBoolean( idMkVs, false );
var idLyrI = charIDToTypeID( "LyrI" );
var list6 = new ActionList();
list6.putInteger( 6 );
desc35.putList( idLyrI, list6 );
executeAction( idslct, desc35, DialogModes.NO );
var idslct = charIDToTypeID( "slct" );
var desc36 = new ActionDescriptor();
var idnull = charIDToTypeID( "null" );
var ref15 = new ActionReference();
var idLyr = charIDToTypeID( "Lyr " );
ref15.putName( idLyr, "Group 4" );
desc36.putReference( idnull, ref15 );
var idMkVs = charIDToTypeID( "MkVs" );
desc36.putBoolean( idMkVs, false );
var idLyrI = charIDToTypeID( "LyrI" );
var list7 = new ActionList();
list7.putInteger( 8 );
desc36.putList( idLyrI, list7 );
executeAction( idslct, desc36, DialogModes.NO );
上面的代码“应该”选择 3 个 layerSets,所有的名字都是“Group 4”。 ID被正确记录,4、6和8。但它只会选择一个相同的layerSet 3次。 您可以使用脚本来检查 id 匹配,并使用圆顶选择正确的层,但我喜欢理解 ;)
欢迎任何建议!
【问题讨论】:
-
我猜,我说它不是在做连续选择
"addToSelectionContinuous"。当您选择第 4 组然后继续选择其他两个时,您是否尝试过查看脚本侦听器踢出的内容? - 由于您的 PSD 中的 IDS 不正确,我的 SL 代码不匹配。
标签: select photoshop layer script