Изменение стилей текста и свойств текста с помощью элементов управления выражениями.
Используйте выражения для управления стилем текста в любом текстовом выражении или в шаблонах анимационного дизайна. Некоторые вещи, которые вы можете сделать с выражениями:
Связывайте несколько заголовков и обновляйте их стили одновременно (очень полезно для разработки заголовков).
Синхронизируйте шрифт, размер и стили в нескольких текстовых слоях.
Внесите глобальные изменения в свойства текста.
После их установки для текстового слоя можно ссылаться на свойства этого слоя, чтобы быстро применять изменения ко всей композиции.
After Effects использует функции "get" и "set" для чтения и записи значений свойств текста в механизм выражения. Выражения используются для управления и установки стилей шрифтов, таких как свойства текста в текстовых слоях.
Чтобы получить доступ к этим функциям для свойств текста:
Добавление выражения в свойство Source Text текстового слоя. Дополнительные сведения см. в разделе Основы выражения.
Во всплывающем меню Язык выражений выберите Свойства > текст > Свойства.
Сохранение выражений в виде шаблонов настроек
Выберите свойство исходного текста, в который добавлены выражения. Затем выберите Анимация > Сохранить шаблон настроек анимации, чтобы можно было использовать выражения в других проектах. Шаблоны настроек анимации сохраняются на панели Эффекты и шаблоны.
При обращении к шрифтам в выражениях они должны использовать специальное «системное имя» (или аналогичное). Рекомендуется вставить это специальное имя из диалогового окна «Текст > шрифт» > «Выбор шрифта», чтобы избежать ошибок выражения.
Откройте всплывающее меню Язык выражений и выберите Текст > Шрифт. Откроется диалоговое окно с раскрываемыми меню для выбора шрифта и шрифта для вставки в выражение.
Синхронизация шрифтов
Шрифты, на которые ссылаются только в Редакторе выражений, не записываются как шрифты, используемые проектом. Чтобы убедиться, что все шрифты, упомянутые в Редакторе выражений, будут автоматически синхронизироваться или заполнять диалоговое окно «Разрешение шрифтов», используйте все эти шрифты в слое, даже если этот источник слоя скрыт.
Объект стиля
Все свойства стиля для текстового слоя существуют в объекте стиля, доступ к которому осуществляется в свойстве Source Text с помощью следующих действий:
// Использование всего пути к свойству Source Text text.sourceText.style // Использование общего имени текущего свойства thisProperty.style
Использование стиля само по себе аналогично использованию любого из двух приведенных выше примеров, но это может сбивать с толку, если атрибуты стиля из нескольких текстовых слоев объединяются.
Атрибуты стиля других текстовых слоев также можно прочитать. Используйте хлыст выбора, чтобы создать ссылку на другой текстовый слой в начале первого примера, показанного выше.
// Доступ к объекту стиля определенного текстового слоя thisComp.layer(“Другое имя слоя”).text.sourceText.style;
Доступные текстовые атрибуты
Следующие атрибуты стиля текста можно прочитать и задать с помощью объекта style:
Шрифт
Размер шрифта
Псевдополужирный
Искусственный курсив
Все прописные
Малые прописные
Трекинг
Интерлиньяж
Автоинтерлиньяж
Отклонение от базовой линии
Заполнить (включить/выключить)
Цвет заливки
Обводка (включить/выключить)
Цвет обводки
Ширина обводки
Свойство «Исходный текст» текстового слоя преобразуется выражениями в виде строки JavaScript. Сам текст можно прочитать с помощью sourceText, но он должен быть задан для объекта style с помощью метода setText, если атрибуты style изменяются. Смотрите примеры ниже.
Объединение стиля и исходного текста
Объединение стиля и исходного текста
Чтобы вернуть значения стиля и фактического исходного текста во времени, необходимо объединить функции getStyleAt и setText. Ниже приведены два примера того, как записать это выражение.
// Чтобы вернуть значения как стиля, так и фактического исходного текста во времени (сокращенная рука) var sourceTextProperty = thisComp.layer(“MAIN TEXT”).text.sourceText; var newStyle = sourceTextProperty.getStyleAt(0,0); newStyle.setText(sourceTextProperty);
// Для возврата значений как стиля, так и фактического исходного текста предыдущего слоя в порядке наложения слоев var sourceTextProperty = thisComp.layer(index - 1).text.sourceText; var newStyle = sourceTextProperty.getStyleAt(0,0); newStyle.setText(sourceTextProperty);
Выпадающий список шрифтов
Связывание шрифтов или стилей с раскрывающимся меню
Раскрывающиеся меню можно использовать для управления стилями текста, например для блокировки текстовых слоев определенными шрифтами. Это полезно для рекомендаций по брендам, шаблонов, MoGRTS и многого другого:
// Чтобы заблокировать текстовый слой для определенных шрифтов с помощью dropdown Menu Control var dropDownMenu = thisComp.layer(“LayerName”).effect(“Dropdown Menu Control”)(“Menu”); switch (dropDownMenu.value) { case 1 : text.sourceText.style.setFont(“Georgia”); break; case 2 : text.sourceText.style.setFont(“Impact”); break; по умолчанию : text.sourceText.style.setFont(“Tahoma”); }
Основной текстовый слой
Получение свойств текста из “Text Layer 1”, но переопределение размера шрифта и цвета заливки
Свяжите несколько текстовых слоев с основным контроллером шрифтов, чтобы управлять стилем текста нескольких слоев одновременно. Создайте два текстовых слоя и вставьте это выражение в исходный текст одного из них:
// Чтобы получить все свойства текста из текстового слоя, thisComp.layer(“Текстовый слой 1”).text.sourceText.style;
Можно получить стиль из текстового слоя, но переопределить определенные свойства текста, добавив значения с помощью функций Set. Ниже приведены два примера использования цвета заливки и размера шрифта.
// Получить все свойства текста из “Text Layer 1”, но переопределить цвет заливки и размер шрифта с жестко закодированными значениями var newStyle = thisComp.layer(“Text Layer 1”).text.sourceText.style; newStyle.setFillColor(hexToRgb(“FF0000”)).setFontSize(100);
// Чтобы получить все свойства текста из “Text Layer 1”, но переопределить цвет заливки и размер шрифта с текущими текстовыми свойствами слоя var newStyle = thisComp.layer(“Text Layer 1”).text.sourceText.style; var currentFillColor = thisProperty.style.fillColor; var currentFontSize = thisProperty.style.fontSize; newStyle.setFillColor(currentFillColor).setFontSize(currentFontSize);
Примеры
Ниже приведены примеры получения и использования значений свойств текста в выражениях.
Шрифт
Ниже приведены примеры доступа к шрифту текстового слоя, размеру шрифта, искусственному полужирному шрифту, искусственному курсиву, отслеживанию и ведущему:
// Чтобы вернуть имя шрифта для самого текстового слоя
text.sourceText.style.font;
// Чтобы вернуть имя шрифта, используемого другим текстовым слоем{{n} }var otherLayer = thisComp.layer("Имя другого слоя");
otherLayer.text.sourceText.style.font;
// Чтобы вернуть значение размера шрифта для самого текстового слоя
text.sourceText.style.fontSize;
// чтобы вернуть значение размера шрифта для другого текстового слоя
var otherLayer = thisComp.layer("Имя другого слоя");
otherLayer.text.sourceText.style.fontSize;
// Чтобы вернуть логическое значение значение того, является ли текст слоя Faux Bold или нет (True или False)
text.sourceText.style.isFauxBold;
// Чтобы вернуть логическое значение того, является ли текст слоя text Faux Italic или нет (True или False)
text.sourceText.style.isFauxItalic;
// Чтобы вернуть значение отслеживания текстового слоя в виде числа{{ n}}text.sourceText.style.tracking;
// Чтобы вернуть значение интерлиньяжа текстового слоя в виде nu mber
text.sourceText.style.leading;
Заливка
Ниже приведены примеры получения параметров «Заливка» и «Цвет заливки» текстового слоя.
// Чтобы вернуть логическое значение того, применена ли к тексту слоя заливка (True или False)
text.sourceText.style.applyFill;
// Чтобы вернуть значение цвета заливки текстового слоя
// По умолчанию возвращается массив значений RGB по шкале от 0 до 1,0
текст .sourceText.style.fillColor;
// Установите цвет заливки текстового слоя с помощью setApplyFill и setFillColor
// Значения setFillColor определяются как массив RGB на шкале между 0–1.0
var newStyle = style.setApplyFill(true);
newStyle.setFillColor([1.0, 1.0, 1.0]);
{{n} }// Установите цвет заливки текстового слоя, заменив массив RGB 0–1.0 на hexToRGB, чтобы определить значения цвета с помощью шестнадцатеричных значений
var newStyle = style.setApplyFill(true);
{{ n}}newStyle.setFillColor(hexToRgb("FFFFFF"));
Примечание.
Для возврата значений цвета заливки для R, G или B текстового слоя, добавьте в скобки 0, 1 или 2 соответственно.
// Чтобы вернуть красное (R) значение цвета заливки
text.sourceText.style.fillColor[0];
Обводка
Ниже приведены примеры получения значений обводки, цвета обводки и ширины обводки текстового слоя.
// Чтобы вернуть логическое значение того, применена ли к тексту слоя Обводка (True или False)
text.sourceText.style.applyStroke;
// Чтобы вернуть значение цвета обводки текстового слоя // По умолчанию возвращается массив значений RGB по шкале от 0 до 1,0
text.sourceText.style. strokeColor;
// Задайте цвет обводки текстового слоя с помощью setApplyStroke и setStrokeColor
// Значения setStrokeColor определяются как массив RGB со шкалой от 0 до 1,0{{ n}}var newStyle = style.setApplyStroke(true);
newStyle.setStrokeColor([1.0, 0.0, 0.0]);
// Устанавливаем Обводка Цвет текстового слоя, заменяющий массив RGB 0–1,0 на hexToRGB для определения значений цвета с помощью шестнадцатеричных значений
var newStyle = style.setApplyStroke(true);
newStyle. setStrokeColor(hexToRgb("FF0000"));
// Чтобы вернуть значение ширины обводки текстового слоя в виде числа
text.sourceText.style.strokeWidth;
Примечание.
Для возврата значений цвета обводки для R, G или B текстового слоя, добавьте в скобки 0, 1 или 2 соответственно.
// Чтобы вернуть зеленое (G) значение цвета обводки
text.sourceText.style.strokeColor[1];
Функции «Get»
Используйте функцию «get» для возврата значений стиля определенного символа в необходимое время. В качестве «index» нужно указывать число, являющееся индексом буквы или символа, значение стиля которого необходимо получить. «atTime» также должно быть числом, указывающим время в композиции, из которого можно получить стиль в случае, если стиль является ключевым кадром и меняется с течением времени.
text.sourceText.getStyleAt(index, atTime);
Примечание.
Использование text.sourceText.style аналогично использованию text.sourceText.getStyleAt(0,0).
// Получает стиль первого символа в начале временной шкалы
text.sourceText.getStyleAt(0,0);
Функции «Set»
Дополнительные функции «set», которые могут использоваться по отдельности или в сочетании друг с другом для управления стилями в слоях. Каждая из этих функций вызывается для объекта стиля свойства исходного текста:
// Установите используемый шрифт в Arial
style.setFont("ArialMT")
// Установите размер шрифта 80
style.setFontSize(80);
// Включите Faux Bold с логическим значением
style.setFauxBold(true){ {n}}
// Включить искусственный курсив с помощью логического значения
style.setFauxItalics(true)
// Включить все заглавные буквы с помощью логического значения{{n} }style.setAllCaps(true)
// Включить малые заглавные буквы с помощью логического значения
style.setSmallCaps(true)
// Установить Отслеживание в виде числа
style.setTracking(10);
// Устанавливаем интерлиньяж в виде числа
style.setLeading(10);{{n} }
// Включить автоматический интерлиньяж с помощью логического значения
style.setAutoLeading(true);
// Установить смещение базовой линии в виде числа
style.setBaselineShift(10);
// Устанавливаем ширину обводки в виде числа
style.setStrokeWidth(10);
Все функции «Set» для текстовых стилей могут использоваться вместе, позволяя с легкостью задать несколько параметров без необходимости каждый раз определять новый стиль, как показано в следующем примере:
Примечание.
Точка с запятой ставится только после самого последнего атрибута. Написание каждого атрибута в отдельной строке помогает облегчить чтение всей цепочки.
Для указания начала новой строки текста в строковом выражении можно использовать комбинацию символов «\r». Например, чтобы скопировать исходный текст из одного слоя в тот же самый слой и повторить эту операцию для всех прописных символов в новой строке, используйте следующее выражение:
Дополнительнsые варианты использования выражений в исходном тексте
Добавление текстового слоя в композицию и добавление выражения
к его свойству "Исходный текст" может стать отличным способом проверки значений свойства
другого слоя. Например, следующее выражение для
свойства исходного текста сообщает имя и значение свойства непрозрачности
для следующего слоя в порядке размещения слоев:
В следующем примере сообщается имя элемента видеоряда, используемого в качестве источника самого верхнего слоя изображения в порядке наложения в текущий момент времени, для которого установлен переключатель «Видео»:
// Создать sourceFootageName как пустую строку
var sourceFootageName = "";
// Перебираем все слои в композиции
for (var i = 1; i <= thisComp.numLayers; i++) {
// Если i соответствует индексу этого слоя, перейти к следующему циклу
if (i == index) {
continue;
}
// Установить myLayer для текущая итерация цикла
var myLayer = thisComp.layer(i);
// Если в myLayer нет видео или он не активен, переходим к следующему циклу/слою
if ( !myLayer.hasVideo || !myLayer.active ) {
continue;
}
// Если myLayer активен в текущее время
if ( myLayer.active ) {
try {
// Задайте для sourceFootageName имя источника myLayer
sourceFootageName = myLayer.source.name;{{n }} } catch ( err ) {
// Если у myLayer нет источника,
// установите для sourceFootageName имя myLayer
sourceFootageName = myLayer.name;
// Остановить цикл
break ;
}
}
// Отобразить sourceFootageName
sourceFootageName;
Дополнительные ресурсы о выражениях
Итак, вы изучили основные принципы выражений. На сайте сообщества вы найдете наглядные примеры и сможете показать свои работы.