[JavaScript, API] Extendscript «Hello World!!!»

Автор Сообщение
news_bot ®

Стаж: 6 лет 9 месяцев
Сообщений: 27286

Создавать темы news_bot ® написал(а)
08-Фев-2021 19:33

Всем привет.Хочу предложить вам небольшой пример, который поможет новичку с быстрым стартом в написании скриптов для программ Adobe. Данный скрипт предназначается для программы After Effects. Если вы не знакомы с самой программой это не страшно, будет достаточно базовых знаний javascript. Полный скрипт с комментариями вы можете найти тут.Итак, начнем.Наш маленький плагин (технически это не плагин, но назовем его так) будет представлять собой  окно в интерфейсе AfterEffects, в котором вы сможете писать скрипт, тут же его выполняя. Согласитесь, это должно быть удобно для новичка. Поскольку это окно интерфейса со своим контекстом весь его код мы поместим внутри объекта:
{
  // Тут будет расположен наш код
}
Первое что нам надо сделать, это создать окно или, если оно уже создано, получить на него ссылку.
{
      var win = (this instanceof Panel)
          ? this
          : new Window("palette", 'Extendscript Notepad');
}
Если контекст плагина уже является окном this instanceof Panel, то мы сохраняем его в переменной win . В противном случае мы создаем новое окно new Window("palette", 'Extendscript Notepad') . Конструктор Window получает два аргумента. Первый обязательный, это тип окна. Второй необязательный, это заголовок нашего окна, он будет отображаться на корешке. Окно создано. Поехали дальше.Теперь мы добавим в окно текстовое поле для написания кода
var editText = win.add(
   'edittext',
   [0, 0, 300, 300],
   'alert("Hello, World!!!")',
   { multiline: true }
);
Все элементы интерфейса добавляются методом add нашего окна. Этот метод принимает следующие аргументы:
  • тип элемента, в данном случае 'edittext' 
  • прямоугольник занимаемый элементом в верстке окна
  • текст, если он предусмотрен данным типом элемента
  • опциональные параметры элемента
Таким образом мы создали редактируемое текстовое поле, расположенное в точке 0 0 окна, размерами 300 * 300 пикселей, текст по умолчанию в поле будет 'alert("Hello, World!!!")' , а в параметрах мы указываем, что текстовое поле должно быть многострочным (по умолчанию оно будет однострочным). Готово. Следующим шагом мы добавим кнопку, по нажатию на которую код из текстового поля будет запускаться.
var btnRun = win.add(
     'button',
     undefined,
     'run'
);
Тут все параметры те же что и в текстовом поле, только в качестве прямоугольника мы передаем undefined , таким образом размер кнопки будет определен по умолчанию.Кнопка есть, давайте заставим ее работать. Для этого мы воспользуемся событием кнопки onClick
btnRun.onClick = function() {
   try {
       eval(editText.text);
   } catch (e) {
       alert(e);
   }
};
По нажатию на кнопку мы пытаемся запустить код из текстового поля eval(editText.text). Если по каким-либо причинам нам это не удастся, будет выведено окно с описанием произошедшей ошибки alert(e);Вот собственно и все. Нам осталось только настроить верстку окна и отобразить плагин, в случае если он еще не был показан.
win.layout.layout(true);
win.onResizing  =
win.onResize    = function () {
   this.layout.resize();
};
win.layout.resize();
if(win instanceof Window) {
   win.show();
}
Вуаля!!! Плагин готов. Давайте его сохраним как файл .jsx и запустим. Для этого открываем AfterEffects. Создаем новый проект. В меню выбираем File -> Scripts -> Run Script File и выбираем наш скрипт. Если вы все сделали правильно, откроется окно с дефолтной командой alert("Hello World!!!"). Нажмите на кнопку run и увидите результат ее исполнения.
Шутки ради я вставил код самого плагина, и каждое последующее нажатие кнопки открывало новый его экземпляр.Всю документацию по Extendscript вы сможете найти тут.Описания элементов интерфейса хорошо описано тут и тут.Удачи! Дерзайте!Следующая статья: Extendscript Работа с файлами ->
===========
Источник:
habr.com
===========

Похожие новости: Теги для поиска: #_javascript, #_api, #_adobe, #_extendscript, #_after_effects, #_javascript, #_api
Профиль  ЛС 
Показать сообщения:     

Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы

Текущее время: 22-Ноя 12:11
Часовой пояс: UTC + 5