ScriptListener代码在活动层上方创建新层

时间:2018-10-21 12:18:10

标签: photoshop extendscript photoshop-script

我已经使用脚本侦听器创建了一个新层。聪明的做法是将其放置在活动层上方(创建后不从顶部移到顶部)。但是,我不知道要确定代码的哪一部分,因为它们都符合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 );
}

1 个答案:

答案 0 :(得分:1)

我认为AM代码代表Photoshop中的实际功能,它们在内部的工作方式,而DOM则是叠加在上面的某种形式。通常,DOM代码是有限的,并且AM不能做很多事情。在这种情况下,ArtLayer.add()将一层推入activeDocument.layers,使其出现在层堆栈的顶部,而AM命令执行New Layer...命令。同样,通常AM代码的工作速度比DOM快得多(最高10-15倍),尤其是在选择图层并使用它们的情况下。