我一直在使用我在 stackoverflow 上找到的一个函数,据我所知,它可以通过将图层分组、将图层名称转储到数组中然后将它们取消分组来工作。
function getSelectedLayers(){
var idGrp = stringIDToTypeID( "groupLayersEvent" );
var descGrp = new ActionDescriptor();
var refGrp = new ActionReference();
refGrp.putEnumerated(charIDToTypeID( "Lyr " ),charIDToTypeID( "Ordn" ),charIDToTypeID( "Trgt" ));
descGrp.putReference(charIDToTypeID( "null" ), refGrp );
executeAction( idGrp, descGrp, DialogModes.ALL );
var resultLayers=new Array();
for (var ix=0;ix<app.activeDocument.activeLayer.layers.length;ix++){resultLayers.push(app.activeDocument.activeLayer.layers[ix])}
var id8 = charIDToTypeID( "slct" );
var desc5 = new ActionDescriptor();
var id9 = charIDToTypeID( "null" );
var ref2 = new ActionReference();
var id10 = charIDToTypeID( "HstS" );
var id11 = charIDToTypeID( "Ordn" );
var id12 = charIDToTypeID( "Prvs" );
ref2.putEnumerated( id10, id11, id12 );
desc5.putReference( id9, ref2 );
executeAction( id8, desc5, DialogModes.NO );
return resultLayers;
}
var layers = getSelectedLayers();
不幸的是,当没有选择任何图层并且运行此功能时,Photoshop 会抛出该消息
“图层组”命令当前不可用。
有没有办法在脚本停止的情况下至少返回一个空值?这样我就可以在它为空时显示一条关于需要选择图层的消息。
或者有没有办法确定在函数尝试运行分组函数之前没有选择任何图层?
任何帮助是极大的赞赏!