Wie verknüpfe ich den Start und die Pause einer Animation mit einer bestimmten Höhe von einem Nullobjekt?

Ich werde versuchen, es etwas detaillierter zu erklären, ich erstelle eine Reihe von Animationen für eine Website und der Kunde möchte im Wesentlichen eine Vorschau darauf, wie die einzelnen Elemente aufeinander reagieren, während Sie die Seite nach unten scrollen. Ich habe keine Erfahrung mit der Entwicklung von Websites und das ist in Ordnung für diesen Job, da ich nur eine interaktive Vorschau für den Entwickler einrichte.

Bisher habe ich alle Elemente einem Null-Objekt übergeordnet und den Y-Positionswert dieser Null den Schiebereglern zugeordnet und so weit, so gut.

Wo bin ich jetzt verloren oder tatsächlich verwirrt, ob es in AE überhaupt möglich ist, jedes Animationselement so einzurichten, dass es seine Sequenz startet, sobald ich den Schieberegler auf einen bestimmten Wert scrolle? Ich bin mit Ausdrücken nicht allzu vertraut, daher bin ich für jede Hilfe dankbar.

Wenn Sie mich genauer erklären möchten, fragen Sie bitte, hoffentlich habe ich versucht, klar zu machen, was ich frage 👍🏽

Antworten (1)

Sie müssen etwas mehr Details angeben, aber wenn Sie möchten, dass ein Ausdruck nur dann ausgeführt wird, wenn sich ein Schieberegler über einem bestimmten Wert befindet, können Sie verwenden if(something > somethingElse){do stuff here}.

Eine Animation so zu timen, dass sie an diesem Punkt beginnt, ist schwieriger. Ausdrücke können keine Variablen speichern; Sie werten einfach jeden Frame aus. Um also herauszufinden, wie weit die Animation durch die Aktion gehen sollte, müssten Sie den ersten Frame berechnen, bei dem die Eigenschaft den Schwellenwert überschreitet. Sie können dies mit einer Schleife tun:

var propertyToWatch = thisComp.layer("someLayer").someProperty;
var threshold = 12345;
if (propertyToWatch > threshold){ // above the threshold, time to do stuff
    var t = 0;
    // now search for the time when the property went above the threshold
    while (t <= thisComp.duration && propertyToWatch.valueAtTime(t) < threshold){
        t += thisComp.frameDuration; //add one frame
    }
    // t now equals the time when the property went above the threshold.
    // so the animation's relative age is time - t
    var animationAge = time - t;
    //do the animation stuff here, using animationAge as the time constant
}

Die Berechnung dieses Ausdrucks wird mit zunehmendem Alter der Sequenz zunehmend langsamer, da die innere whileSchleife für jeden vorangehenden Frame ausgewertet werden muss. Aber normalerweise nur ein Problem, wenn Sie viele, viele Layer mit dieser Art von Ausdruck haben oder Ihr Comp eine halbe Stunde lang ist.