[JavaScript, API] ExtendScript Работа с файлами
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
<- Предыдущая статья: Extendscript Hello World!!!Всем привет.В предыдущей статье я рассказал, как написать скрипт для Adobe After Effects. Напомню, что наш скрипт создает окно в интерфейсе программы. В этом окне можно вводить и выполнять код Extendscript - язык сценариев для программ Adobe. Теперь хочу предложит вам некоторое расширение функционала данного плагина. Давайте сделаем так, чтобы он мог загружать и сохранять написанные нами скрипты.И так, поехали.Начнем с загрузки скрипта. Для этого добавим кнопку Open и обработчик ее нажатия
var btnOpenFile = win.add('button', undefined, 'open');
btnOpenFile.onClick = function() {
var file = File.openDialog('Открываем скрипт для Adobe AE');
if (!file) return;
if (/\.(jsx|js)$/.test(file.name)) {
file.open("r");
editText.text = file.read();
file.close();
} else {
alert("Файл " + file.name + " должен иметь расширение .js или .jsx")
}
};
Первым делом в обработчике мы вызываем диалоговое окно для открытия файла. Первым аргументом в статический метод File.openDialog передается подсказка для пользователя. Если система поддерживает такую подсказку, она будет отображена. В противном случае этот аргумент будет проигнорирован. Так же этот метод принимает и второй аргумент - метод или строка (в зависимости от ОС) фильтрации расширения открываемых файлов. Но по какой-то причине в последних версиях AE этот аргумент не работает, поэтому в этом скрипте я его использовать не стал. Вместо этого мы чуть ниже сделаем соответствующую проверку.Если пользователь выбрал файл, метод File.openDialog возвратит экземпляр класса File. В противном случае, если пользователь нажал Отмена, будет возвращен null. В таком случае мы прерываем работу обработчика
if (!file) return;
Далее мы проверяем расширение выбранного файла. Для этого мы используем регулярное выражение, проверяющее окончание строки с именем выбранного файла.
/\.(jsx|js)$/.test(file.name)
Нас интересуют файлы .js и .jsx. Оба эти расширения интерпретируются AE как сценарии. Если проверка прошла успешно, мы открываем файл для чтения, для этого передаем методу open аргумент “r” - read, передаем нашему текстовому полю содержимое файла и закрываем файл, чтобы он не засорял память программы.
file.open("r");
editText.text = file.read();
file.close();
Если расширение файла нам не подходит, мы предупреждаем об этом пользователя, на чем работа обработчика завершается.
alert("Файл " + file.name + " должен иметь расширение .js или .jsx")
Можете проверить работу кнопки. Если вы все сделали верно, в текстовом поле отобразится содержимое открытого файла.Следующим шагом мы сохраним наш скрипт. Для этого добавим кнопку Save.
var btnSaveFile = win.add('button', undefined, 'save');
btnSaveFile.onClick = function() {
var file = File.saveDialog('Сохраняем скрипт для Adobe AE');
if (!file) return;
if (!/\.(jsx|js)$/.test(file.name)) {
file.rename(file.name + '.jsx')
}
file.open('w');
file.write(editText.text);
file.close();
};
Тут почти та же логика, что и в предыдущем блоке. Мы открываем диалоговое окно для сохранения файла.
var file = File.saveDialog('Сохраняем скрипт для Adobe AE');
Если пользователь нажал Отменить File.saveDialog возвращает null и мы прерываем работу обработчика
if (!file) return;
Далее проверяем имя файла указанное в диалоговом окне и, если имя не содержит расширений .js или .jsx, переименовываем файл, добавляя нужное расширение
if (!/\.(jsx|js)$/.test(file.name)) {
file.rename(file.name + '.jsx')
}
Имя фала доступно только для чтение, поэтому для его изменения мы используем метод rename.Запустите и проверьте скрипт. С большой долей вероятности могу предположить, что файл сохраняться не будет. Возможно он будет создан, но тем не менее останется пустым. Дело в том, что по умолчанию в настройках After Effects стоит запрет сценариям на запись файлов. Чтобы это исправить, откройте в меню Preferences > Scripting & Expressions, и отметьте чекбокс Allow Scripts to Write Files and Access Network. После того, как вы нажмете Ок, файлы будут сохраняться.
Ну, вот, собственно, и все. Остался только один нюанс, наши кнопки располагаются друг под другом, что не очень эстетично и удобно. Чтобы это исправить, мы перед тем как добавлять кнопки, добавим элемент group
var btnsGroup = win.add('group');
А сами кнопки будем уже добавлять не в окно, а в эту группу
var btnRun = btnsGroup.add('button', undefined, 'run');
var btnOpenFile = btnsGroup.add('button', undefined, 'open');
var btnSaveFile = btnsGroup.add('button', undefined, 'save');
Теперь кнопки отрисовываются инлайн, что, согласитесь, выглядит гораздо лучше.
На этом пока все. Надеюсь, данный пример был вам полезен. Полный скрипт с подробными комментариями вы можете найти тут. Документацию по работе с файлами в AE Extendscript смотрите тут.Спасибо за внимание.<- Предыдущая статья: Extendscript Hello World!!!
===========
Источник:
habr.com
===========
Похожие новости:
- [JavaScript, API] Extendscript «Hello World!!!»
- [Разработка веб-сайтов, JavaScript, Nginx] Солидные фронтенды: конфигурация
- [Информационная безопасность, JavaScript, История IT, Софт, IT-компании] Новая фишинговая атака использует азбуку Морзе для сокрытия вредоносных URL-адресов
- [JavaScript, SvelteJS] Svelte + Redux + Redux-saga
- [Информационная безопасность, Open source, Google API, Софт] Google запустила программу поиска уязвимостей в открытых проектах
- [Настройка Linux, Разработка веб-сайтов, CSS, JavaScript] Просто вертикальный монитор не значит, что я на телефоне (перевод)
- [JavaScript, Монетизация мобильных приложений, Голосовые интерфейсы] Как создавать навыки для виртуальных ассистентов Салют, выйти на многомиллионную аудиторию Сбера и выиграть 2,5 млн руб?
- [JavaScript, ReactJS] createRef, setRef, useRef и зачем нужен current в ref
- [Высокая производительность, Программирование, Java, Конференции] JPoint и Joker: какие доклады запомнились мне больше всего
- [Open source, Системное администрирование, Виртуализация, Openshift] Подробное руководство по релизам OpenShift и процессу обновления для администраторов
Теги для поиска: #_javascript, #_api, #_extendscript, #_adobe, #_after_effects, #_file, #_plugins, #_api, #_javascript, #_api
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 12:29
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
<- Предыдущая статья: Extendscript Hello World!!!Всем привет.В предыдущей статье я рассказал, как написать скрипт для Adobe After Effects. Напомню, что наш скрипт создает окно в интерфейсе программы. В этом окне можно вводить и выполнять код Extendscript - язык сценариев для программ Adobe. Теперь хочу предложит вам некоторое расширение функционала данного плагина. Давайте сделаем так, чтобы он мог загружать и сохранять написанные нами скрипты.И так, поехали.Начнем с загрузки скрипта. Для этого добавим кнопку Open и обработчик ее нажатия var btnOpenFile = win.add('button', undefined, 'open');
btnOpenFile.onClick = function() { var file = File.openDialog('Открываем скрипт для Adobe AE'); if (!file) return; if (/\.(jsx|js)$/.test(file.name)) { file.open("r"); editText.text = file.read(); file.close(); } else { alert("Файл " + file.name + " должен иметь расширение .js или .jsx") } }; if (!file) return;
/\.(jsx|js)$/.test(file.name)
file.open("r");
editText.text = file.read(); file.close(); alert("Файл " + file.name + " должен иметь расширение .js или .jsx")
var btnSaveFile = win.add('button', undefined, 'save');
btnSaveFile.onClick = function() { var file = File.saveDialog('Сохраняем скрипт для Adobe AE'); if (!file) return; if (!/\.(jsx|js)$/.test(file.name)) { file.rename(file.name + '.jsx') } file.open('w'); file.write(editText.text); file.close(); }; var file = File.saveDialog('Сохраняем скрипт для Adobe AE');
if (!file) return;
if (!/\.(jsx|js)$/.test(file.name)) {
file.rename(file.name + '.jsx') } Ну, вот, собственно, и все. Остался только один нюанс, наши кнопки располагаются друг под другом, что не очень эстетично и удобно. Чтобы это исправить, мы перед тем как добавлять кнопки, добавим элемент group var btnsGroup = win.add('group');
var btnRun = btnsGroup.add('button', undefined, 'run');
var btnOpenFile = btnsGroup.add('button', undefined, 'open'); var btnSaveFile = btnsGroup.add('button', undefined, 'save'); На этом пока все. Надеюсь, данный пример был вам полезен. Полный скрипт с подробными комментариями вы можете найти тут. Документацию по работе с файлами в AE Extendscript смотрите тут.Спасибо за внимание.<- Предыдущая статья: Extendscript Hello World!!! =========== Источник: habr.com =========== Похожие новости:
|
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 12:29
Часовой пояс: UTC + 5