Как стать автором
Обновить

Extendscript «Hello World!!!»

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров2.9K

Всем привет.

Хочу предложить вам небольшой пример, который поможет новичку с быстрым стартом в написании скриптов для программ Adobe. Данный скрипт предназначается для программы After Effects. Если вы не знакомы с самой программой это не страшно, будет достаточно базовых знаний javascript. Полный скрипт с комментариями вы можете найти тут.

И так, начнем.

Наш маленький плагин (технически это не плагин, но назовем его так) будет представлять собой  окно в интерфейсе AfterEffects, в котором вы сможете писать скрипт, тут же его выполняя. Согласитесь, это должно быть удобно для новичка. Поместим наш код в блок, изолируя его от внешней среды. Это необходимо, чтобы наши переменные не были случайно переопределены каким-либо другим скриптом, запущенным в After Effects параллельно с наши.

{
	// Тут будет расположен наш код
}

Первое что нам надо сделать, это создать окно или, если оно уже создано, получить на него ссылку.

{
      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 Работа с файлами ->

Теги:
Хабы:
Всего голосов 6: ↑6 и ↓0+6
Комментарии0

Публикации

Истории

Работа

Ближайшие события

19 августа – 20 октября
RuCode.Финал. Чемпионат по алгоритмическому программированию и ИИ
МоскваНижний НовгородЕкатеринбургСтавропольНовосибрискКалининградПермьВладивостокЧитаКраснорскТомскИжевскПетрозаводскКазаньКурскТюменьВолгоградУфаМурманскБишкекСочиУльяновскСаратовИркутскДолгопрудныйОнлайн
24 – 25 октября
One Day Offer для AQA Engineer и Developers
Онлайн
25 октября
Конференция по росту продуктов EGC’24
МоскваОнлайн
26 октября
ProIT Network Fest
Санкт-Петербург
7 – 8 ноября
Конференция byteoilgas_conf 2024
МоскваОнлайн
7 – 8 ноября
Конференция «Матемаркетинг»
МоскваОнлайн
15 – 16 ноября
IT-конференция Merge Skolkovo
Москва
25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань