Javascript:未定义的数组不是对象

时间:2018-08-25 16:07:33

标签: javascript scripting photoshop extendscript

很抱歉,是否已经有人问过这个问题。我发现了未定义的错误,但没有找到数组,所以这是我的问题:

当我尝试用给定的数组声明selRef41时,出现“未定义不是对象”错误。 (顺便说一句,我使用ESTK,我正在为Photoshop编写此脚本)

var docRef = app.activeDocument;
var layRef = docRef.activeLayer;

function createSelection(layRef) {
// Declare function variables
const oneT = 1/3;
const twoT = (1/3)*2;

docRef = app.activeDocument;
layRef = app.activeLayer;

if (detailFactor == "2x2") {
    var selRef41 = Array(Array(0, 0),
                        Array(layRef.width.value / 2, 0),
                        Array(layRef.width.value / 2, layRef.height.value / 2),
                        Array(0, layRef.height.value / 2));
}

对应的主线只是调用该函数的单行代码:

function main() {
createSelection(layRef);
}

1 个答案:

答案 0 :(得分:0)

您在哪里找到这个layRef.width.value?图层没有widthheight属性(仅文档具有),这是导致代码错误的原因。您可以使用其bounds计算宽度和高度:

var layRef = docRef.activeLayer;
refWidth = layRef.bounds[2] - layRef.bounds[0];
refheight = layRef.bounds[3] - layRef.bounds[1];
alert([refWidth,refheight]);

您可以选中Photoshop Scripting Reference pdf来检查DOM对象的属性和方法。

此外,正如cybernetic.nomad指出的那样,这将行不通:layRef = app.activeLayer;,而且您拥有if (detailFactor == "2x2")但没有分配detailFactor