Как объявить функции в пользовательской глобальной библиотеке в After Effects?

Можно ли сохранить все мои пользовательские выражения во внешнем файле .jsx, чтобы я мог вызывать их из своих проектов?

Например, допустим, у меня есть выражение, которое я часто использую, которое связывает точку инструмента марионетки с позицией нулевого объекта. Я знаю, что могу преобразовать это выражение в функцию, которая могла бы принимать, скажем, два аргумента, но могу ли я сохранить его в пользовательской библиотеке, чтобы я мог легко повторно использовать его в проекте?

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

Заранее спасибо!


person CCrawler    schedule 22.12.2012    source источник


Ответы (2)


Я успешно проверил это, поместите это поверх вашего выражения:

$.evalFile("/Users/myname/ae/functions.txt");

Затем вы можете получить доступ к любым функциям, которые у вас есть в вашем файле functions.txt.

Подробнее см. здесь: https://forums.creativecow.net/readpost/227/29337

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

В любом случае, вот моя полная настройка, на всякий случай: мое выражение:

$.evalFile("/Users/myname/ae/functions.txt");

var p1  = thisComp.layer("Null 1").transform.position;
var p2  = thisComp.layer("Null 4").transform.position;
var p = p2 - p1;

printPosition(p)

И мой файл functions.txt содержит следующее:

function printPosition (p){
    return " " + parseInt(p[0]) + " : " + parseInt(p[1])
}
person ling    schedule 13.12.2015
comment
Стоит отметить, что файл с выражением будет считываться с диска каждый раз при рендеринге кадра. Если у вас есть размытие в движении, это может означать десятки раз в каждом кадре. Это может сделать пользовательский интерфейс очень медленным, если есть много слоев с внешними файлами jsx для чтения. - person stib; 04.01.2019

Я не думаю, что это возможно. Но вы можете добиться многого, сохранив выражение в качестве предустановки (перетащив фактическое свойство слоя в окно «Эффекты и предустановки». Обратите внимание, что вы можете применить предустановку к нескольким слоям, выбрав их и используя команду «Анимация» -> «Применить предустановку анимации»). функция

Надеюсь, это немного поможет.

person Jonas Kvist Jensen    schedule 17.10.2015