Keyfast
Script
Free

Fade Out At End

By Jack Vaughan
Updated 11/1/2025

About

Fades out selected layers over 30 frames ending at each layer's out-point.

Code

// Cavalry Script: Keyfast - Fade Out at End
// For each selected layer, animates opacity from 100 to 0 over 30 frames ending at layer out-point
var selectedLayers = api.getSelection();
if (selectedLayers.length === 0) {
console.warn("No layers are selected. Please select some layers first.");
} else {
var frameOffset = 30; // Number of frames for the animation
console.info("Animating opacity (fade out at end) on " + selectedLayers.length + " selected layer(s)...");
for (var i = 0; i < selectedLayers.length; i++) {
var layerId = selectedLayers[i];
var layerName = api.getNiceName(layerId);
try {
if (api.hasAttribute(layerId, "opacity")) {
var outF = api.getOutFrame(layerId);
var inF = api.getInFrame(layerId);
var start = Math.max(inF, outF - frameOffset);
var end = outF;
// Sample current opacity at the start frame
var originalFrame = null;
try { originalFrame = api.getFrame(); } catch (_) {}
var startOpacity = 100;
try {
if (typeof api.setFrame === "function") { api.setFrame(start); }
var sampled = api.get(layerId, "opacity");
if (typeof sampled === "number" && isFinite(sampled)) {
startOpacity = sampled;
}
} catch (_) {}
// Restore original frame if we moved it
try { if (originalFrame !== null) api.setFrame(originalFrame); } catch (_) {}
api.keyframe(layerId, start, {"opacity": startOpacity});
api.keyframe(layerId, end, {"opacity": 0});