Javascript: Массив undefined не является объектом

Извините, если этот вопрос уже задавался. Я нашел неопределенные ошибки, но не для массива, поэтому мой вопрос:

Я получаю ошибку "undefined is not a object", когда я пытаюсь объявить 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));
}

Соответствующий main является однострочным для вызова функции:

function main() {
createSelection(layRef);
}

1 ответ

Где ты нашел это layRef.width.value? Слои не имеют width или же height свойство (только документы), это то, что вызывает ошибку в вашем коде. Вы можете рассчитать ширину и высоту, используя их bounds:

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

Вы можете проверить PDF справочник по сценариям Photoshop, чтобы проверить свойства и методы объектов DOM.

Также, как заметил cybernetic.nomad, это не сработает: layRef = app.activeLayer;и плюс у вас есть if (detailFactor == "2x2") но detailFactor не назначен

Другие вопросы по тегам