Как изменить цвет текстового слоя в After Effects 2017 с помощью ExtendScript?

Мне нужно знать, как изменить цвет текстового слоя в After Effects 2017 с помощью ExtendScript. Я могу изменить сам текст очень просто, вот так:

var comp=app.project.item(10);
comp.layer(1).property('Source Text').setValue('My Text Here');

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

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


person Jonathan Leger    schedule 11.10.2017    source источник


Ответы (1)


Страница 182 Руководство по созданию сценариев After Effects CS6 (самая последняя документация, которую Adobe изволила предоставить нам) описывает объект TextDocument, который Тип данных для свойства Исходный текст текстового слоя. Среди атрибутов есть fillColor и strokeColor.

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

Таким образом, вы можете установить его следующим образом:

var textProp = comp.layer(1).property('Source Text');
//make a new textDocument, copying the values of the current one
var textDocument = textProp.value;
// change any attributes of the textDocument here, e.g.:
textDocument.fillColor = [R, G, B];
// write the textDocument over the existing one
textProp.setValue(textDocument);

R, G и B — значения с плавающей запятой, где 1,0 ⇒ 255 для 8-битного цвета.

Вы также можете увидеть это руководство по созданию сценариев в Интернете по адресу aeenhancers. конструктор, он говорит newTextDocument должно быть new TextDocument

person stib    schedule 12.10.2017
comment
Я пробовал это. Это не меняет цвет слоя. Например, я использовал это... var comp=app.project.item(17); comp.layer(1).property('Исходный текст').fillColor = c; Где c равно [255,255,255]... но текст не становится белым. - person Jonathan Leger; 12.10.2017
comment
попробуйте [1,1,1] значение представляет собой число с плавающей запятой от 0 до 1 для 8-битных проектов, где 1 соответствует 255 - person stib; 12.10.2017
comment
черт, забыл добавить .value, чтобы получить значение исходного текста. Я изменил свой ответ. - person stib; 12.10.2017
comment
Это тоже не сработало. Я действительно читал документы и работал над этим. Вы не можете просто присвоить значение текстовому документу, вы должны внести изменения в дубликат объекта TextDocument, а затем назначить его в качестве исходного текста. - person stib; 12.10.2017
comment
Вот и получилось спасибо! Я проголосовал за ваш ответ, но у меня недостаточно репутации, чтобы он появился. - person Jonathan Leger; 12.10.2017