Objekt | Beschreibung | Beispiel |
---|---|---|
thisComp | Aktuelle Komposition | thisComp; |
thisLayer | Stromschicht | thisLayer.transform.scale[1]; |
thisProperty | Aktuelle Eigenschaft Der Ausdruck wird angewendet. | thisProperty[1]; |
time | Strom Timecode an Cursorposition in Sekunden. | "Seconds: " + time; |
value | Aktueller Wert, der der aktuellen Eigenschaft zugeordnet ist. | value + "_TEST"; |
Objekt | Beschreibung | Beispiel |
---|---|---|
colorDepth | Projektfarbe in Bits pro Pixel. | colorDepth; |
Funktion | Beschreibung |
---|---|
layer(index || number) | Gibt ein Schicht-, Licht- oder Kameraobjekt zurück. |
layer(layer, relIndex) | Gibt das Objekt mit einem relativen Index in die angegebene Ebene zurück. |
Funktion | Beschreibung | Beispiel |
---|---|---|
framesToTime(frames, fps) | Konvertieren Sie in Sekunden einen Timecode in Timecode. | framesToTime(50, 1.0 / thisComp.frameDuration); |
timeToCurrentFormat(t, fps, isDuration) | Konvertiert Timecode in die aktuellen Projekteinstellungen Anzeigeformat. | |
timeToFeetAndFrames(t, fps, framesPerFoot, isDuration) | Konvertiert Timecode in Füße und Frames -Format. | |
timeToFrames(t, fps, isDuration) | Konvertiert Timecode in Frames. | |
timeToNTSCTimecode(t, ntscDropFrame, isDuration) | Konvertiert Timecode in NTSC Timecode mit oder ohne Tropfenrahmen. | |
timeToTimecode(t, timecodeBase, isDuration) | Konvertiert Timecode mithilfe der angegebenen Zeitbasis in einen anderen Timecode. |
Funktion | Beschreibung | Beispiel |
---|---|---|
comp(name) | Finden Sie die offene Komposition mit dem gegebenen Namen. | comp("Comp 1"); |
footage(name) | Finden Sie das Projektmaterial mit dem angegebenen Namen. | footage("RedHarring.png"); |
Du hast:
Sie wollen:
Lösung:
Nehmen wir an, Sie haben eine Formschicht mit einer Rechteckform.
Stellen Sie das Elternteil der Rechteckschicht auf die Textebene ein. Dadurch wird die Positionierung relativ zur Positionierung der Textschicht.
Fügen Sie der Größeneigenschaft des Rechteckpfades den folgenden Ausdruck hinzu
var textLayer = thisComp . layer ( "Text Layer 1" ) ;
var textRect = textLayer . sourceRectAtTime ( time - textLayer . inPoint , true ) ;
// set size of rectangle path to text rectangle's width and height
[ textRect . width , textRect . height ] ;
Dadurch wird die Größe des Rechtecks auf die Größe des Textes gesetzt. Wenn es mehrere Zeilen gibt, nimmt es die volle Größe aller Linien.
var rectPath = content ( "Rectangle 1" ) . content ( "Rectangle Path 1" ) ;
var x = rectPath . size [ 0 ] ;
var y = rectPath . size [ 1 ] ;
// set position of rectangle path to text rectangle's width and height
[ x / 2 , - ( y / 2 ) ] ;
Dies setzt die untere linke Position des Rechteckwegs nach links von der Schicht. Textschichten haben immer ihre Ankerpunkte am unteren Rand der ersten Textzeile. Dadurch wird die Berechnung einfacher zu tun.
var textLayer = thisComp . layer ( "Text Layer 1" ) ;
var textRect = textLayer . sourceRectAtTime ( time - textLayer . inPoint , true ) ;
[ textLayer . transform . position [ 0 ] + textRect . left ,
textLayer . transform . position [ 1 ] + textRect . top + textRect . height ] ;
Dies setzt die Position der Schicht des Rechtecks auf die Position des Textes. Der Grund für das Hinzufügen der Rechteckgröße liegt darin, dass die Schriftrenderung dazu führen kann, dass der erste Buchstabe ein paar Pixel von der Position entfernt ist. Durch das Hinzufügen der Rechteckkoordinaten wird dies ausgleichen.
Probleme:
Du hast:
Sie wollen:
Fügen Sie dem Video horizontaler Jitter hinzu, so dass es wie 50 Hz miteinander aussieht.
Lösung:
[ transform . position [ 0 ] , transform . position [ 1 ] + ( ( timeToFrames ( time ) % 2 ) * 2 ) ]
Probleme:
Der Jitter ist zu schwer, dass Sie dies lösen können, indem Sie die Multiplikation im Ausdruck beseitigen
[ transform . position [ 0 ] , transform . position [ 1 ] + ( timeToFrames ( time ) % 2 ) ]
Oder sogar mehrere um die Hälfte, um einen sehr subtilen Schütteln zu bekommen.
[ transform . position [ 0 ] , transform . position [ 1 ] + ( ( timeToFrames ( time ) % 2 ) * 0.5 ) ]
Der Text muss vertikal zentriert sein. Fügen Sie der Transformationseigenschaft der Textschicht den folgenden Ausdruck hinzu
S = thisLayer ;
x = transform . position [ 0 ] ;
y = transform . position [ 1 ] ;
rect = S . sourceRectAtTime ( time , false ) ;
y_offset = rect . height / 2 ;
[ x , y - y_offset ]