Scripting - Wo ist die Dokumentation für das Layer#Effects-Attribut?

Ich habe versucht, ein Skript zu erstellen, das automatisch einen Effekt auf die ausgewählte Ebene anwendet. Bisher sieht es so aus:

var myLayer = app.project.activeItem.selectedLayers[0];

Ich habe hier und hier die Verwendung des EffectsAttributs gesehen, das so verwendet wird:

var myEffect = myLayer.Effects.addProperty("My Effect");

Die einzige Klasse, die ich im CS3-Skriptleitfaden gefunden habe, die die addPropertyMethode enthält, war das PropertyGroupObjekt, das auf Seite 147 zu finden ist. Es wird nicht erwähnt myLayer.Effects. Tatsächlich habe ich noch nie ein Attribut mit einem großgeschriebenen Anfangsbuchstaben gesehen.

Ich werde dies verwenden, um das Erstellen von etwa 100 Kreisen auf einer Ebene zu automatisieren. (Diesen Effekt finden Sie unter Effekte & Voreinstellungen > Generieren > Kreis .) Ich möchte in der Lage sein, eine Liste von X/Y-Koordinaten bereitzustellen und für jede einen Kreis mit diesem Zentrum und einer festen Größe zu erzeugen. Diese Liste könnte aus einer Datei oder aus einer Liste aller Nullobjekte auf derselben Ebene stammen.

Könnten Sie kreisförmige Ebenen anstelle von Effekten verwenden?

Antworten (1)

Ich habe die Antwort tatsächlich im CS3-Skriptleitfaden gefunden . CompItem#selectedLayersgibt tatsächlich ein Array von AVLayerObjekten zurück. AVLayerist eine Unterklasse von Layerund hat einige Attribute. Hier sind einige davon:

  • Masken
  • Auswirkungen
  • Ankerpunkte
  • Position
  • Skala
  • X-Drehung
  • Y-Drehung
  • Opazität

Seltsamerweise müssen Sie beim Aufrufen dieser Attribute darauf achten, ob das Attribut aus einem oder zwei Wörtern besteht. Wenn es sich um ein Wort handelt, wird der erste Buchstabe groß geschrieben, aber wenn es sich um zwei Wörter handelt, wird der erste Buchstabe klein geschrieben und der Rest in Camel-Case-Form.

Wenn Sie beispielsweise eine AVLayer-Instanz aufgerufen haben myLayerund ihre Liste der Effekte erhalten möchten, rufen Sie auf myLayer.Effects, aber wenn Sie ihre X-Rotation erhalten möchten, rufen Sie auf myLayer.xRotation.


Was mein Endziel betrifft, Kreise auf einer ausgewählten Ebene zu erstellen, habe ich mir Folgendes ausgedacht (funktioniert in CS5.5, obwohl auch eine Fehlerprüfung erforderlich ist, um festzustellen, ob eine Ebene tatsächlich ausgewählt ist!):

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