He estado tratando de crear un script que aplique automáticamente un efecto a la capa seleccionada. Hasta ahora, se ve así:
var myLayer = app.project.activeItem.selectedLayers[0];
He visto aquí y aquí el uso del Effects
atributo, que se usa así:
var myEffect = myLayer.Effects.addProperty("My Effect");
La única clase que encontré en la guía de secuencias de comandos CS3 que tiene el addProperty
método fue el PropertyGroup
objeto, que se encuentra en la página 147. No se menciona myLayer.Effects
. De hecho, nunca antes había visto un atributo con una primera letra en mayúscula.
Voy a usar esto para automatizar la creación de alrededor de 100 círculos en una capa. (Este efecto se encuentra en Efectos y ajustes preestablecidos > Generar > Círculo ). Quiero poder proporcionar una lista de coordenadas X/Y y para cada una generar un círculo con este centro y un tamaño fijo. Esta lista podría provenir de un archivo o de una lista de cada objeto nulo en la misma capa.
De hecho, encontré la respuesta en la guía de secuencias de comandos de CS3 . CompItem#selectedLayers
en realidad devuelve una matriz de AVLayer
objetos. AVLayer
es una subclase de Layer
y tiene bastantes atributos. Éstos son algunos de ellos:
Por extraño que parezca, al llamar a estos atributos, debe prestar atención a si el atributo es una o dos palabras. Si es una palabra, la primera letra irá en mayúscula, pero si son dos palabras, la primera letra será minúscula y el resto en camel case fasion.
Por ejemplo, si tiene una instancia de AVLayer llamada myLayer
y desea obtener su lista de efectos, llame a myLayer.Effects
, pero si desea obtener su rotación X, llame a myLayer.xRotation
.
En cuanto a mi objetivo final de crear círculos en una capa seleccionada, esto es lo que se me ocurrió (funciona en CS5.5 aunque también necesita verificación de errores para ver si una capa está realmente seleccionada):
function createCircle(layer, coords, radius) {
var x = coords[0];
var y = coords[1];
var circle = layer.Effects.addProperty("Circle");
circle.Center.setValue([x, y]);
circle.Radius.setValue(radius);
return circle
}
var myComp = app.project.activeItem;
var myLayer = myComp.selectedLayers[0];
var circles = [];
//coordsList could come from an external file or another function
for (var i = 0; i < coordsList.length; i++) {
circles.push(createCircle(myLayer, coordsList[i], 75));
}
puntapié