Выражения в After Effects. Метод substring. Извлечение строки
В After Effects выражение substring(startIndex, endIndex) используется для извлечения подстроки из строки, хранящейся в переменной tc. Этот метод работает аналогично JavaScript, так как выражения в After Effects основаны на JavaScript/ExtendScript.
Список эффектов и не только After Effects
Выражения After Effects список
Как это работает:
substring(startIndex, endIndex):
startIndex — индекс символа, с которого начинается подстрока (включительно).
endIndex — индекс символа, на котором подстрока заканчивается (не включается в результат).
Индексы начинаются с 0.
————-
4
tc = «HelloWorld»;
tc.substring(3, 8); //Вернет подстроку с 3-го по 7-й символы: «loWor»
Если tc содержит меньше 8 символов, метод вернет подстроку до конца строки. Например, для tc = «AE2023»:
tc.substring(3, 8) вернет «2023» (так как строка заканчивается на 5-м индексе).
Если tc — это свойство текстового слоя (например, text.sourceText), убедитесь, что строка содержит достаточно символов.
—————————
5
Чтобы извлечь часть времени (часы, минуты) из строки с таймкодом:
tc = «12:34:56»;
tc.substring(3, 5); // Вернет «34»
Индексы всегда начинаются с 0.
Если endIndex не указан, подстрока будет до конца строки (например, tc.substring(3)).
———————
1
timeToTimecode(time, 30);
Вариант для более короткого формата (например, только MM:SS)
if (time < 0) {
«00:00»;
} else {
tc = timeToTimecode(time, 30);
tc.substring(3, 8); // Извлекает MM:SS
}
//Таймер обратного отсчёта
if (10 — time < 0) {
«00:00»;
} else {
tc = timeToTimecode(10 — time, 30);
tc.substring(3, 8); // Извлекает MM:SS
}
—————————-
4
Анимация «написания текста» по одному символу
Симулируем эффект «набора текста» — по мере роста времени, отображается всё больше букв:
n = Math.floor(time * 2); // скорость набора 2 символа в секунду
text.sourceText.substring(0, n);
Текст появляется по одной букве
——————-
6
Удалить первые 3 символа текста
text.sourceText.substring(3); //Текст без первых 3 символов
———————-
6
Отображение последних N символов
t = text.sourceText;
t.substring(t.length — 4); //Последние 4 символа строки
———————
6
Дополнительно: задержка начала
fullText = text.sourceText;
delay = 2;
charsPerSecond = 10;
n = Math.floor((time — delay) * charsPerSecond);
n = Math.max(0, n); // чтобы не было отрицательных значений
fullText.substring(0, n);
———————
6
Сделать курсор мигающим в конце строки
Добавь символ курсора (например, «|»)
fullText = text.sourceText;
charsPerSecond = 10;
n = Math.floor(time * charsPerSecond);
shownText = fullText.substring(0, n);
// мигающий курсор
cursor = (Math.floor(time * 2) % 2 == 0) ? » |» : » «;
shownText + cursor;
————————
6
Текст печатается по словам, а не по буквам
fullText = text.sourceText;
words = fullText.split(» «); // разбиваем на массив слов
wordsPerSecond = 1.5; // скорость: 1.5 слова в секунду
n = Math.floor(time * wordsPerSecond);
n = Math.min(n, words.length); // не выйти за пределы
words.slice(0, n).join(» «);
split(» «) — превращает строку в массив слов.
words.slice(0, n) — берёт первые n слов.
join(» «) — собирает их обратно в строку через пробелы