ScriptListener 代码在活动层之上创建新层
ScriptListener code creates new layer above active layer
我已经使用 scriptlistener 创建了一个新层。它做的聪明的事情是将它放在活动层之上(创建后没有将它从顶部移动)但是,我不知道它是代码的哪一部分,因为它们都符合 executeAction:
function create_new_layer(layername)
{
var idMk = charIDToTypeID( "Mk " );
var desc447 = new ActionDescriptor();
var idnull = charIDToTypeID( "null" );
var ref217 = new ActionReference();
var idLyr = charIDToTypeID( "Lyr " );
ref217.putClass( idLyr );
desc447.putReference( idnull, ref217 );
var idUsng = charIDToTypeID( "Usng" );
var desc448 = new ActionDescriptor();
var idNm = charIDToTypeID( "Nm " );
desc448.putString( idNm, layername );
var idLyr = charIDToTypeID( "Lyr " );
desc447.putObject( idUsng, idLyr, desc448 );
var idLyrI = charIDToTypeID( "LyrI" );
desc447.putInteger( idLyrI, 57 );
executeAction( idMk, desc447, DialogModes.NO );
}
我认为 AM 代码代表了 Photoshop 中的实际功能,它们在内部是如何工作的,DOM 是在其之上的某种覆盖。通常 DOM 代码是有限的,不能做很多 AM 可以做的事情。在这种情况下,ArtLayer.add()
将层推送到 activeDocument.layers
,因此它出现在层堆栈的顶部,而 AM 命令执行 New Layer...
命令。通常 AM 代码的工作速度也比 DOM 快得多(高达 10-15 倍),尤其是在选择图层和使用图层等方面。
我已经使用 scriptlistener 创建了一个新层。它做的聪明的事情是将它放在活动层之上(创建后没有将它从顶部移动)但是,我不知道它是代码的哪一部分,因为它们都符合 executeAction:
function create_new_layer(layername)
{
var idMk = charIDToTypeID( "Mk " );
var desc447 = new ActionDescriptor();
var idnull = charIDToTypeID( "null" );
var ref217 = new ActionReference();
var idLyr = charIDToTypeID( "Lyr " );
ref217.putClass( idLyr );
desc447.putReference( idnull, ref217 );
var idUsng = charIDToTypeID( "Usng" );
var desc448 = new ActionDescriptor();
var idNm = charIDToTypeID( "Nm " );
desc448.putString( idNm, layername );
var idLyr = charIDToTypeID( "Lyr " );
desc447.putObject( idUsng, idLyr, desc448 );
var idLyrI = charIDToTypeID( "LyrI" );
desc447.putInteger( idLyrI, 57 );
executeAction( idMk, desc447, DialogModes.NO );
}
我认为 AM 代码代表了 Photoshop 中的实际功能,它们在内部是如何工作的,DOM 是在其之上的某种覆盖。通常 DOM 代码是有限的,不能做很多 AM 可以做的事情。在这种情况下,ArtLayer.add()
将层推送到 activeDocument.layers
,因此它出现在层堆栈的顶部,而 AM 命令执行 New Layer...
命令。通常 AM 代码的工作速度也比 DOM 快得多(高达 10-15 倍),尤其是在选择图层和使用图层等方面。