【问题标题】:ScriptListener code creates new layer above active layerScriptListener 代码在活动层之上创建新层
【发布时间】:2018-10-21 12:18:09
【问题描述】:

我已经使用 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 );
}

【问题讨论】:

  • 但这是一种默认的 Photoshop 行为:在活动层之上创建新层。我错过了什么吗?
  • var layerRef = app.activeDocument.artLayers.add(); 在堆栈顶部创建一个层,但 Layers > New Layer 在活动层顶部创建一个。你会认为两者会做同样的事情。
  • 复制并粘贴那个坏男孩,我会接受它作为最好的答案ツ

标签: photoshop extendscript photoshop-script


【解决方案1】:

我认为 AM 代码代表了 Photoshop 中的实际功能,它们在内部是如何工作的,而 DOM 是在此之上的某种叠加。通常 DOM 代码是有限的,不能做很多 AM 可以做的事情。在这种情况下,ArtLayer.add() 将一个层推送到activeDocument.layers,因此它出现在层堆栈的顶部,而 AM 命令执行 New Layer... 命令。此外,通常 AM 代码的运行速度比 DOM 快得多(高达 10-15 倍),尤其是在选择图层和使用它们时。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-22
    • 2018-01-20
    • 2011-07-24
    • 1970-01-01
    • 2016-10-16
    • 2015-01-10
    • 1970-01-01
    相关资源
    最近更新 更多