Застрял при попытке передать значение из jsx в js

Работая над плагином для фотошопа, мне нужно, чтобы значение ширины текущего документа было доступно в моем скрипте index.js.

Насколько мне известно, я могу получить значение в своем документе index.jsx только с помощью следующего кода:

var mywidth = app.activeDocument.width;

Есть ли способ получить такое же значение из моего файла index.js? Если нет, есть ли способ передать значение из моего файла index.jsx обратно в файл index.js?

Как некоторые люди уже предлагали в предыдущих вопросах, которые я задавал здесь, я изо всех сил старался использовать советы, описанные в статье Давиде Барранка здесь: https://www.davidebarranca.com/2014/02/html-panels-tips-5-passing-objects-from-jsx-to-html-json/

Но по какой-то причине я просто не могу заставить его работать.

Как выглядят ваши функции? Трудно сказать, в чем проблема, не увидев их, потому что это должно быть довольно просто

Sergey Kritskiy 13.09.2018 19:48
0
1
106
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Во-первых, вам нужно загрузить файл CSInterface.js в вашу панель. Убедитесь, что вы скачали этот файл и ваш путь к нему правильный.

var csInterface = new CSInterface();

Затем вы можете использовать метод evalScript.

csInterface.evalScript()

Первый аргумент - это строка для eval, а второй аргумент - это обратный вызов, потому что скрипт может занять некоторое время, и вы не хотите, чтобы пользовательский интерфейс панели был заморожен, пока скрипт не будет выполнен. Обратный вызов имеет переменную, которая является результатом вашего JSX-кода в строке.

csInterface.evalScript('app.activeDocument.width.as("px")',function(result){
    alert(result)
});

Вы получите обратно ширину в единицах, соответствующих единицам, указанным в настройках Photoshop. Поэтому вы можете указать преобразование в пиксели. В любом случае это не сработает, если единицы измерения вашего документа - проценты. В этом случае вам необходимо заранее поменять единицы измерения.

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