Scripting: ¿dónde está la documentación para el atributo Layer#Effects?

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 Effectsatributo, 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 addPropertymétodo fue el PropertyGroupobjeto, 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.

¿Podrías usar capas de formas circulares en lugar de efectos?

Respuestas (1)

De hecho, encontré la respuesta en la guía de secuencias de comandos de CS3 . CompItem#selectedLayersen realidad devuelve una matriz de AVLayerobjetos. AVLayeres una subclase de Layery tiene bastantes atributos. Éstos son algunos de ellos:

  • Máscaras
  • Efectos
  • Puntos de anclaje
  • Posición
  • Escala
  • Rotación X
  • Rotación Y
  • Opacidad

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 myLayery 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));
}