Текст в боксах из внешнего файла с помощью выражений (expression) в After Effects. Узнайте, как импортировать строки из текстового файла и как использовать имена слоев, чтобы дублировать выражения.
Начало работы
Создаем новый текстовый файл с таким содержимым:
var text1 = “this is a string from outside of the box”; var text2 = “split my text \r in two”; var text3 = [“array strings”,”in a text file”]; var text4 = [1,134/255,33/255,1,”hello world”];
Здесь, в переменных мы можем хранить: строки, значения, логическое значение (boolean), формулы или массивы.
Кстати, ‘\ г’ можно использовать, чтобы добавить разрыв строки.
Сохраните файл, и получите абсолютный путь к файлу.
Чтение текстового файла
Вы можете использовать плашки для текста из этой статьи: Плашки для текста с помощью выражений (expression) в After Effects
И потом, переименуйте оба слоя (текстовый и шейповый) в “text1” и “box1”.
При дублировании этих слоев, они будут автоматически увеличиваться до “text2” “box2”, “Text3” “Box3”, …
Добавим выражение для текстового слоя Text Layer (text1) > text > Source Text:
$.evalFile(“your path”); eval(thisLayer.name)
Укажем в evalFile абсолютный путь к текстовому файлу.
$.evalFile(“absolute_path”) загружает данные из внешнего файла.
eval(variable name) указывает, какую переменную использовать для чтения.
Если изменить имя слоя на Text3 или text4, содержание текстового слоя изменится к соответствующей переменной из текстового файла. Если вы продублируете оба слоя, текст автоматически обновляется, но box все еще соответствует формату 1-го слоя текста, даже если вы связали слои с помощью parent.
Обновление выражений (expression) для шейпового слоя box
Измените выражения на шейповом слое, с помощью одного из следующих команды javascript, чтобы извлечь часть имени слоя:
var target = “text” + thisLayer.name.substr(3,2) ; var target = thisLayer.name.replace(“box”,”text”) ; var target = “text” + thisLayer.name.slice(3,4) ;
Эти 3 метода дают одинаковый результат, “box1” становится “text1”.
Для шейпового слоя вывести свойства с выражения, путем нажатия EE, при выделенном шейповом слое, и заменить выражения:
Для свойства size:
var target = "text" + thisLayer.name.substr(3,3) ; var mytext = thisComp.layer(target); [ mytext.sourceRectAtTime().width, mytext.sourceRectAtTime().height]
Для свойства position:
var target = "text" + thisLayer.name.substr(3,3) ; var mytextY= thisComp.layer(target).sourceRectAtTime().top; var mytextX= thisComp.layer(target).sourceRectAtTime().left; var boxsize=content("Rectangle 1").content("Rectangle Path 1").size; [mytextX+boxsize[0]/2, mytextY+boxsize[1]/2]
Теперь выражение на шейповом слое связан с правильным текстовым слоем при дублировании.
Процесс массивов
Можно хранить другие свойства в текстовом файле, используя числовые значения. В переменной “text4” есть массив RGBA, за которой следует строка: [1,134/255,33/255,1,”hello world”]
Добавим аниматор Color для текстового слоя
Добавим выражение (expression) для Fill Color:
$.evalFile(“your_path”); var target = thisLayer.name; [eval(target)[0],eval(target)[1],eval(target)[2],eval(target)[3]]
Первая строка обращается к текстовому файлу (не забудьте заменить your_path на абсолютный путь к текстовому файлу). Последняя строка использует значения, хранящиеся в позиции 0,1,2,3 как результат массива RGBA.
Если вы измените значения, сохраненные в текстовом файле, изменится цвет текста! Вам необходимо очистить память, чтобы заставить выражение обновится: Edit > Purge.
Источник: aexpr.wordpress.com