Fotogramas y etiquetas
La línea de tiempo: los fotogramas, sus duraciones y las etiquetas de animación. (25 funciones)
app.addFrame(frameId?, durationMs?, before?) — modifica, deshacible
Añade un fotograma en blanco nuevo ("Nuevo fotograma vacío" en el menú Fotograma), después de frameId o antes con before. El fotograma nuevo pasa a ser el activo.
frameId(string, opcional) — El fotograma junto al que se inserta. Omítelo (o pasa nil) para añadir al final.durationMs(number, opcional) — Por omisión es la duración de fotograma estándar del sprite.before(boolean, opcional) — True inserta el fotograma nuevo antes deframeIden lugar de después, que es la única forma de añadir un fotograma antes del primero. Necesita unframeId.
Devuelve (string): El id del fotograma nuevo.
app.addTag(fromFrameId, toFrameId, name?, color?, direction?) — modifica, deshacible
Crea una etiqueta nueva que abarca [fromFrameId, toFrameId].
fromFrameId(string)toFrameId(string)name(string, opcional) — Por omisión es "Tag N".color(string, opcional) — Color hexadecimal.direction(TagDirection: "forward" | "reverse" | "pingpong" | "pingpongReverse", opcional) — Dirección de reproducción; por omisión, hacia delante.
Devuelve (string): El id de la etiqueta nueva.
app.bakeTween(layerId, frameId) — modifica, deshacible, se rechaza en una capa bloqueada
Quita la interpolación que empieza en frameId pero conserva cada intermedio como una celda normal, de modo que ya no se vuelven a dibujar. Un solo paso de deshacer.
layerId(string) — Una capa de imagen (no el Fondo).frameId(string) — El fotograma del fotograma clave inicial: la celda propia de la capa ahí (no un vínculo) es la que se interpola.
No devuelve nada.
app.duplicateFrame(frameId, linked?) — modifica, deshacible
Duplica un fotograma (y sus celdas) justo después de él y activa la copia ("Nuevo fotograma" en el menú Fotograma).
frameId(string)linked(boolean, opcional) — True vincula cada celda copiada a la del original (imágenes compartidas), false copia cada una; si se omite, las capas continuas vinculan y las demás copian.
Devuelve (string): El id del fotograma copia.
app.getActiveFrameId() — lee
El id del fotograma activo en este momento, o nil si no hay ninguno.
Devuelve (string): Id de fotograma o nil.
app.getFrame(frameId) — lee
Un fotograma como { id, index, durationMs }, o nil si no existe ese fotograma.
frameId(string)
Devuelve (table): Tabla de fotograma o nil.
app.getFrames() — lee
Todos los fotogramas en el orden de la línea de tiempo, como { id, index (0 = primero), durationMs }.
Devuelve (table): Array de tablas de fotograma.
app.getTags() — lee
Todas las etiquetas de animación como { id, name, fromFrameId, toFrameId, fromIndex, toIndex (índices de fotograma inclusivos), color (hex), direction ("forward" | "reverse" | "pingpong" | "pingpongReverse"), repeat (veces que se reproduce antes de continuar; ausente = en bucle para siempre) }.
Devuelve (table): Array de tablas de etiqueta.
app.moveFrame(frameId, toIndex) — modifica, deshacible
Mueve un fotograma a una posición nueva en la línea de tiempo.
frameId(string)toIndex(number) — Posición de destino en el orden final, limitada al rango válido.
No devuelve nada.
app.regenerateTween(layerId, frameId, revertFrameIds?) — modifica, deshacible, se rechaza en una capa bloqueada
Vuelve a dibujar los intermedios de la interpolación que empieza en frameId a partir de su celda inicial. Los fotogramas que editaste a mano se omiten salvo que figuren en revertFrameIds. No se puede volver a dibujar una interpolación cuyo fotograma final ya no existe. Un solo paso de deshacer; si no hay nada que cambiar, no añade ninguno.
layerId(string) — Una capa de imagen (no el Fondo).frameId(string) — El fotograma del fotograma clave inicial: la celda propia de la capa ahí (no un vínculo) es la que se interpola.revertFrameIds(table, opcional) — Una lista de ids de fotogramas intermedios cuyas celdas editadas a mano también se vuelven a dibujar.
No devuelve nada.
app.removeFrame(frameId) — modifica, deshacible
Elimina un fotograma y todas las celdas, colocaciones de tiles y colocaciones de referencia que hay en él. Lanza un error si es el último fotograma que queda.
frameId(string)
No devuelve nada.
app.removeTag(tagId) — modifica, deshacible
Elimina una etiqueta (los fotogramas que abarcaba no se tocan).
tagId(string)
No devuelve nada.
app.removeTween(layerId, frameId) — modifica, deshacible, se rechaza en una capa bloqueada
Elimina la interpolación que empieza en frameId y borra sus intermedios generados (los fotogramas que editaste a mano se quedan como celdas normales). Un solo paso de deshacer.
layerId(string) — Una capa de imagen (no el Fondo).frameId(string) — El fotograma del fotograma clave inicial: la celda propia de la capa ahí (no un vínculo) es la que se interpola.
No devuelve nada.
app.reverseFrames(fromFrameId?, toFrameId?) — modifica, deshacible
Invierte el orden de los fotogramas de un rango (todos si se omite) en un solo paso de deshacer. Las celdas, los vínculos, las colocaciones de tilemap y las transformaciones de referencia se mueven con sus fotogramas; las etiquetas siguen cubriendo las mismas posiciones.
fromFrameId(string, opcional) — Primer fotograma del rango; omítelo (junto con toFrameId) para invertir todos los fotogramas.toFrameId(string, opcional) — Último fotograma del rango (inclusivo).
No devuelve nada.
app.setActiveFrame(frameId) — modifica
Convierte un fotograma en el activo (lo que hace hacer clic en él en la línea de tiempo). No es una edición que se pueda deshacer.
frameId(string)
No devuelve nada.
app.setAllFrameDurations(durationMs) — modifica, deshacible
Establece la misma duración de reproducción en todos los fotogramas del sprite.
durationMs(number)
No devuelve nada.
app.setFrameDuration(frameId, durationMs) — modifica, deshacible
Establece la duración de reproducción de un fotograma.
frameId(string)durationMs(number) — Milisegundos enteros, de 1 a 65535.
No devuelve nada.
app.setFrameProps(frameId, props) — modifica, deshacible
Establece la etiqueta de color y/o el bloqueo de un fotograma.
frameId(string)props(table) — Las claves omitidas no cambian.color(string) — La etiqueta de la línea de tiempo del fotograma como "#rrggbb"; una cadena vacía la borra.locked(boolean) — Nada puede editar las celdas de un fotograma bloqueado, ni siquiera los scripts, y el fotograma no se puede eliminar, mover ni cambiar de duración.
No devuelve nada.
app.setTagProps(tagId, props) — modifica, deshacible
Actualiza una o más propiedades de una etiqueta.
tagId(string)props(table) — Las claves omitidas no cambian.name(string) — El nombre de la etiqueta.color(string) — El color de la etiqueta como "#rrggbb".direction(TagDirection: "forward" | "reverse" | "pingpong" | "pingpongReverse") — Dirección de reproducción.fromFrameId(string) — El primer fotograma del tramo.toFrameId(string) — El último fotograma del tramo.repeat(integer ≥ 0) — Cuántas veces reproduce la etiqueta antes de continuar (Repetir de la etiqueta en Aseprite); 0 se repite para siempre.
No devuelve nada.
app.setTween(layerId, frameId, opts?) — modifica, deshacible, se rechaza en una capa bloqueada
Interpola la celda de una capa en frameId hacia un fotograma posterior: los fotogramas intermedios reciben celdas reales (la imagen de la celda inicial movida, escalada, rotada, sesgada y desvanecida según las opciones, con el suavizado elegido) que siguen vinculadas a la receta, así que se vuelven a dibujar cuando cambia la celda inicial. Reemplaza una interpolación que ya empiece ahí. Un solo paso de deshacer. Los fotogramas sobre los que dibujaste se quedan como están. Devuelve el id de la interpolación.
layerId(string) — Una capa de imagen (no el Fondo).frameId(string) — El fotograma del fotograma clave inicial: la celda propia de la capa ahí (no un vínculo) es la que se interpola.opts(table, opcional)to(string) — Obligatorio. El id del fotograma del fotograma clave final: un fotograma posterior en la misma capa. Los intermedios son los fotogramas estrictamente entre ambos; el fotograma final conserva tu propio dibujo.from({ dx, dy, scaleX, scaleY, rotation, skewX, skewY, opacity }, each optional (missing = no change: 0, 1, 0, 0, 1); predeterminado no change) — La pose en el fotograma clave inicial (normalmente se deja como está).end({ dx, dy, scaleX, scaleY, rotation, skewX, skewY, opacity }, each optional (missing = no change: 0, 1, 0, 0, 1); predeterminado no change) — La pose que se alcanza en el fotograma clave final: traslación en píxeles del sprite, escala (1 = igual), rotación y sesgo en grados, multiplicador de opacidad 0..1.ease(TweenEaseFamily: "linear" | "hold" | "sine" | "quad" | "cubic" | "quart" | "quint" | "expo" | "circ" | "back" | "elastic" | "bounce"; predeterminado "quad") — La curva de suavizado de todas las pistas. Se ignora si se indicasteps.mode(TweenEaseMode: "in" | "out" | "inOut"; predeterminado "inOut") — Qué extremo de la interpolación modelaease(lo ignoran linear y hold).overshoot(number 0–10) — Suavizado back: cuánto se carga o se pasa (por omisión 1.70158). Solo con ease = "back".amplitude(number 1–10) — Suavizado elastic: tamaño del pico (por omisión 1). Solo con ease = "elastic".period(number 0.01–1) — Suavizado elastic: longitud de la oscilación como fracción del tramo (por omisión 0.3). Solo con ease = "elastic".bounces(integer 1–8) — Suavizado bounce: número de aterrizajes (por omisión 4). Solo con ease = "bounce".steps(integer 1–64) — Cuantiza el progreso en esta cantidad de saltos iguales (un aspecto escalonado, sostenido) en lugar de una curva suave.curve(a list of 2-32 anchors { x, y, inX?, inY?, outX?, outY?, corner? }; the first is x = 0, y = 0 and the last x = 1, y = 1, and x rises along the list) — Una curva de suavizado dibujada que pasa por esos anclajes (bézier cúbicas; inX/inY y outX/outY son los tiradores como desplazamientos desde el anclaje, 0 por omisión). Reemplaza aeaseysteps.trackEasing({ position?, scale?, rotation?, skew?, opacity?, color? }, each an easing table with the same keys as the easing options (ease, mode, overshoot, amplitude, period, bounces, steps, curve)) — Suavizado de pistas individuales, que reemplaza al predeterminado solo en esas pistas.color({ hue?, saturation?, lightness?, tint? }: hue in degrees (-360..360), saturation and lightness -100..100, tint 0..1) — Ajustes de color que se alcanzan en la pose final, aplicados a la imagen inicial (Tono/Saturación HSL y luego el tinte). Los campos omitidos quedan neutros (0). El suavizado de la pistacolorlos modela.colorFrom(the same fields as color; predeterminado all neutral) — Los ajustes de color en el fotograma clave inicial (normalmente se dejan como están).tintColor(color ("#rgb", "#rrggbb[aa]" or { r, g, b, a }); predeterminado "#ffffff") — El color hacia el que mezcla el tinte (su alfa se ignora).ramp({ first, last, shift, wrap? }: palette indices first..last (0-255), shift in whole places (-255..255), wrap true by default) — Solo sprites indexados: los píxeles cuyo índice de paleta está en first..last (sin contar el índice transparente) avanzan por ese tramo de la paletashiftlugares a lo largo del tramo, dando la vuelta al pasar los extremos con wrap y deteniéndose en ellos si no. Se ignora en los demás modos de color. El suavizado de la pistacolorlo modela.path(TweenPath: "straight" | "arc" | "wave" | "zigzag" | "shake" | "custom"; predeterminado "straight") — El recorrido que sigue la posición entre las poses, como un desplazamiento respecto a la línea recta.points(a list of 2-64 anchors { x, y, inX?, inY?, outX?, outY?, corner? } in sprite pixels relative to the start cel's position; inX/inY and outX/outY are the handles as offsets from the anchor (0 by default)) — trayectoria custom: la ruta dibujada, una Bézier cúbica por los anclajes, recorrida a velocidad constante. Obligatoria con path = "custom". El primer anclaje es la posiciónfromy el último la posiciónend: sifromoendomiten dx/dy se toman de ahí, y los que se den deben coincidir.orient(boolean; predeterminado false) — Gira el dibujo para que siga la dirección de avance por la trayectoria (se suma a la rotación; sin giro al inicio). Usaresample(RotSprite es buena opción).height(number) — Trayectoria arc: la altura de la joroba en píxeles. Por omisión 8.pathAmplitude(number) — Trayectorias wave, zigzag y shake: el desplazamiento en píxeles. Por omisión 4.cycles(number 0–64) — Trayectorias wave y zigzag: cuántas ondas completas de largo. Por omisión 1.phase(number -1–1) — Trayectoria wave: en qué punto de la onda empieza, en vueltas. Por omisión 0.seed(integer ≥ 0) — Trayectoria shake: la semilla aleatoria; una misma semilla siempre vibra de la misma manera. Por omisión 1.fade(TweenFade: "alpha" | "dither"; predeterminado "alpha") — Cómo se muestra la pista de opacidad: opacidad parcial o una disolución con tramado de píxeles enteros.ditherPattern(TweenDither: "bayer2" | "bayer4" | "bayer8" | "cluster"; predeterminado "bayer4") — El patrón con el que se disuelve un fundido con tramado, fijo al lienzo para que no se arrastre cuando el dibujo se mueve. Darlo implica fade = "dither".crossfade(boolean; predeterminado false) — Funde el dibujo inicial con el propio dibujo del fotograma clave final (según el suavizado de la pista de opacidad), con tramado o mezclado segúnfade. El dibujo del fotograma clave final pasa a ser una entrada: editarlo vuelve a generar la interpolación.delay(integer 0–4096; predeterminado 0) — Fotogramas en que se mantiene la pose inicial antes de moverse; después el movimiento ocupa el resto del tramo.trackDelay({ position?, scale?, rotation?, skew?, opacity?, color? }, each a whole number of frames (0-4096)) — Retardos para pistas concretas, que sustituyendelaysolo en esas pistas.preset(a preset recipe, as app.tweenPreset returns: { from, end, easing, path, squash, pivotX, pivotY, exposure, shortestRotation, pingPong, trackEasing?, color?, orient?, fade?, delay?, trackDelay? } with distances relative to the start cel's size) — Crea la interpolación a partir de un preajuste, adaptado a la celda inicial (las distancias son fracciones de su tamaño; los retardos, fracciones del tramo). Junto a él solo se pueden darto,resample,subpixel,timing,autoRegenerate,fade,ditherPattern,crossfade,delayyorient, que sustituyen los del preajuste.squash(number 0–1; predeterminado 0) — Aplastamiento y estiramiento según la velocidad, con el volumen preservado.pivotX(number; predeterminado 0.5) — Punto fijo de la escala, la rotación y el sesgo, como fracción del ancho de la celda inicial (0.5 = centro).pivotY(number; predeterminado 0.5) — Lo mismo, como fracción del alto de la celda inicial.pivotSpace(TweenPivotSpace: "cel" | "sprite"; predeterminado "cel") — En qué están pivotX y pivotY. "sprite" los convierte en un punto en píxeles del sprite, el mismo para todas las capas interpoladas con él.resample(TransformInterpolation: "nearest" | "rotsprite" | "bilinear"; predeterminado "nearest") — Cómo se remuestrean los píxeles cuando cambian la escala, la rotación o el sesgo. Una traslación pura siempre copia los píxeles exactamente.subpixel(TweenSubpixel: "round" | "floor" | "monotonic"; predeterminado "round") — Cómo caen las posiciones fraccionarias sobre píxeles enteros.timing(TweenTiming: "frames" | "time"; predeterminado "frames") — Qué cuenta como progreso.exposure(integer 1–8; predeterminado 1) — Dibuja una de cada N poses y la mantiene ("de dos en dos" = 2).shortestRotation(boolean; predeterminado true) — Rota por el camino corto (el cambio se ajusta a -180..180) en lugar del número exacto de grados.pingPong(boolean; predeterminado false) — Ida y vuelta: el movimiento alcanza la pose final a mitad del tramo y regresa a la pose inicial en el fotograma clave final, así que un bucle que termina donde empezó no necesita un segundo dibujo. El suavizado modela cada mitad.autoRegenerate(boolean; predeterminado true) — Vuelve a dibujar los intermedios por sí solo cuando cambian el fotograma clave inicial o los fotogramas.
Devuelve (string): El id de la interpolación.
app.setTweenChain(layerId, frameIds, opts?) — modifica, deshacible, se rechaza en una capa bloqueada
Interpola a través de varios fotogramas clave de una capa en un solo paso: una interpolación de cada fotograma clave al siguiente, todas con las mismas opciones (igual que app.setTween sin to). Las interpolaciones que ya empiezan en esos fotogramas se reemplazan; las demás de la capa no deben solaparse. Un solo paso de deshacer. Devuelve los ids de las interpolaciones, en orden.
layerId(string) — Una capa de imagen (no el Fondo).frameIds(table) — Los fotogramas clave de la cadena como lista de ids de fotograma, el más temprano primero (2 o más). Una interpolación va de cada uno al siguiente, así que los vecinos comparten un fotograma clave; todos menos el último necesitan su propia celda.opts(table, opcional)from({ dx, dy, scaleX, scaleY, rotation, skewX, skewY, opacity }, each optional (missing = no change: 0, 1, 0, 0, 1); predeterminado no change) — La pose en el fotograma clave inicial (normalmente se deja como está).end({ dx, dy, scaleX, scaleY, rotation, skewX, skewY, opacity }, each optional (missing = no change: 0, 1, 0, 0, 1); predeterminado no change) — La pose que se alcanza en el fotograma clave final: traslación en píxeles del sprite, escala (1 = igual), rotación y sesgo en grados, multiplicador de opacidad 0..1.ease(TweenEaseFamily: "linear" | "hold" | "sine" | "quad" | "cubic" | "quart" | "quint" | "expo" | "circ" | "back" | "elastic" | "bounce"; predeterminado "quad") — La curva de suavizado de todas las pistas. Se ignora si se indicasteps.mode(TweenEaseMode: "in" | "out" | "inOut"; predeterminado "inOut") — Qué extremo de la interpolación modelaease(lo ignoran linear y hold).overshoot(number 0–10) — Suavizado back: cuánto se carga o se pasa (por omisión 1.70158). Solo con ease = "back".amplitude(number 1–10) — Suavizado elastic: tamaño del pico (por omisión 1). Solo con ease = "elastic".period(number 0.01–1) — Suavizado elastic: longitud de la oscilación como fracción del tramo (por omisión 0.3). Solo con ease = "elastic".bounces(integer 1–8) — Suavizado bounce: número de aterrizajes (por omisión 4). Solo con ease = "bounce".steps(integer 1–64) — Cuantiza el progreso en esta cantidad de saltos iguales (un aspecto escalonado, sostenido) en lugar de una curva suave.curve(a list of 2-32 anchors { x, y, inX?, inY?, outX?, outY?, corner? }; the first is x = 0, y = 0 and the last x = 1, y = 1, and x rises along the list) — Una curva de suavizado dibujada que pasa por esos anclajes (bézier cúbicas; inX/inY y outX/outY son los tiradores como desplazamientos desde el anclaje, 0 por omisión). Reemplaza aeaseysteps.trackEasing({ position?, scale?, rotation?, skew?, opacity?, color? }, each an easing table with the same keys as the easing options (ease, mode, overshoot, amplitude, period, bounces, steps, curve)) — Suavizado de pistas individuales, que reemplaza al predeterminado solo en esas pistas.ends(a list of end pose tables, one per segment (same fields as end)) — Solo para app.setTweenChain: una pose final distinta para cada segmento, en orden; cada una reemplaza aenden su segmento.color({ hue?, saturation?, lightness?, tint? }: hue in degrees (-360..360), saturation and lightness -100..100, tint 0..1) — Ajustes de color que se alcanzan en la pose final, aplicados a la imagen inicial (Tono/Saturación HSL y luego el tinte). Los campos omitidos quedan neutros (0). El suavizado de la pistacolorlos modela.colorFrom(the same fields as color; predeterminado all neutral) — Los ajustes de color en el fotograma clave inicial (normalmente se dejan como están).tintColor(color ("#rgb", "#rrggbb[aa]" or { r, g, b, a }); predeterminado "#ffffff") — El color hacia el que mezcla el tinte (su alfa se ignora).ramp({ first, last, shift, wrap? }: palette indices first..last (0-255), shift in whole places (-255..255), wrap true by default) — Solo sprites indexados: los píxeles cuyo índice de paleta está en first..last (sin contar el índice transparente) avanzan por ese tramo de la paletashiftlugares a lo largo del tramo, dando la vuelta al pasar los extremos con wrap y deteniéndose en ellos si no. Se ignora en los demás modos de color. El suavizado de la pistacolorlo modela.path(TweenPath: "straight" | "arc" | "wave" | "zigzag" | "shake" | "custom"; predeterminado "straight") — El recorrido que sigue la posición entre las poses, como un desplazamiento respecto a la línea recta.points(a list of 2-64 anchors { x, y, inX?, inY?, outX?, outY?, corner? } in sprite pixels relative to the start cel's position; inX/inY and outX/outY are the handles as offsets from the anchor (0 by default)) — trayectoria custom: la ruta dibujada, una Bézier cúbica por los anclajes, recorrida a velocidad constante. Obligatoria con path = "custom". El primer anclaje es la posiciónfromy el último la posiciónend: sifromoendomiten dx/dy se toman de ahí, y los que se den deben coincidir.orient(boolean; predeterminado false) — Gira el dibujo para que siga la dirección de avance por la trayectoria (se suma a la rotación; sin giro al inicio). Usaresample(RotSprite es buena opción).height(number) — Trayectoria arc: la altura de la joroba en píxeles. Por omisión 8.pathAmplitude(number) — Trayectorias wave, zigzag y shake: el desplazamiento en píxeles. Por omisión 4.cycles(number 0–64) — Trayectorias wave y zigzag: cuántas ondas completas de largo. Por omisión 1.phase(number -1–1) — Trayectoria wave: en qué punto de la onda empieza, en vueltas. Por omisión 0.seed(integer ≥ 0) — Trayectoria shake: la semilla aleatoria; una misma semilla siempre vibra de la misma manera. Por omisión 1.fade(TweenFade: "alpha" | "dither"; predeterminado "alpha") — Cómo se muestra la pista de opacidad: opacidad parcial o una disolución con tramado de píxeles enteros.ditherPattern(TweenDither: "bayer2" | "bayer4" | "bayer8" | "cluster"; predeterminado "bayer4") — El patrón con el que se disuelve un fundido con tramado, fijo al lienzo para que no se arrastre cuando el dibujo se mueve. Darlo implica fade = "dither".crossfade(boolean; predeterminado false) — Funde el dibujo inicial con el propio dibujo del fotograma clave final (según el suavizado de la pista de opacidad), con tramado o mezclado segúnfade. El dibujo del fotograma clave final pasa a ser una entrada: editarlo vuelve a generar la interpolación.delay(integer 0–4096; predeterminado 0) — Fotogramas en que se mantiene la pose inicial antes de moverse; después el movimiento ocupa el resto del tramo.trackDelay({ position?, scale?, rotation?, skew?, opacity?, color? }, each a whole number of frames (0-4096)) — Retardos para pistas concretas, que sustituyendelaysolo en esas pistas.squash(number 0–1; predeterminado 0) — Aplastamiento y estiramiento según la velocidad, con el volumen preservado.pivotX(number; predeterminado 0.5) — Punto fijo de la escala, la rotación y el sesgo, como fracción del ancho de la celda inicial (0.5 = centro).pivotY(number; predeterminado 0.5) — Lo mismo, como fracción del alto de la celda inicial.pivotSpace(TweenPivotSpace: "cel" | "sprite"; predeterminado "cel") — En qué están pivotX y pivotY. "sprite" los convierte en un punto en píxeles del sprite, el mismo para todas las capas interpoladas con él.resample(TransformInterpolation: "nearest" | "rotsprite" | "bilinear"; predeterminado "nearest") — Cómo se remuestrean los píxeles cuando cambian la escala, la rotación o el sesgo. Una traslación pura siempre copia los píxeles exactamente.subpixel(TweenSubpixel: "round" | "floor" | "monotonic"; predeterminado "round") — Cómo caen las posiciones fraccionarias sobre píxeles enteros.timing(TweenTiming: "frames" | "time"; predeterminado "frames") — Qué cuenta como progreso.exposure(integer 1–8; predeterminado 1) — Dibuja una de cada N poses y la mantiene ("de dos en dos" = 2).shortestRotation(boolean; predeterminado true) — Rota por el camino corto (el cambio se ajusta a -180..180) en lugar del número exacto de grados.pingPong(boolean; predeterminado false) — Ida y vuelta: el movimiento alcanza la pose final a mitad del tramo y regresa a la pose inicial en el fotograma clave final, así que un bucle que termina donde empezó no necesita un segundo dibujo. El suavizado modela cada mitad.autoRegenerate(boolean; predeterminado true) — Vuelve a dibujar los intermedios por sí solo cuando cambian el fotograma clave inicial o los fotogramas.
Devuelve (table): Los ids de las interpolaciones, uno por segmento, en orden.
app.setTweenEnd(layerId, frameId, toFrameId) — modifica, deshacible, se rechaza en una capa bloqueada
Mueve el final de la interpolación que empieza en frameId a otro fotograma y la vuelve a dibujar. Los intermedios que quedan fuera del nuevo rango se eliminan (o se conservan como celdas normales si los editaste); el propio fotograma final nunca se toca. Falla si el nuevo rango se solapara con otra interpolación de la capa. Un solo paso de deshacer.
layerId(string) — Una capa de imagen (no el Fondo).frameId(string) — El fotograma del fotograma clave inicial: la celda propia de la capa ahí (no un vínculo) es la que se interpola.toFrameId(string) — El nuevo fotograma clave final: un fotograma posterior en la misma capa.
No devuelve nada.
app.setTweenStagger(layerIds, frameId, opts?) — modifica, deshacible, se rechaza en una capa bloqueada
Interpola varias capas con una misma receta (las mismas opciones que app.setTween, o un preajuste adaptado a la celda inicial de cada capa), y cada capa empieza step fotogramas después de la anterior. Con groupPivot las capas se escalan y giran alrededor de un punto compartido, así se mueven como un bloque rígido. Las interpolaciones que ya empiezan ahí se sustituyen. Un solo paso de deshacer. Devuelve los ids de las interpolaciones, en el orden de layerIds.
layerIds(table) — Las capas que interpolar, como lista de ids: capas de imagen (no el Fondo), cada una con su propia celda en frameId. Con order = "given", el orden de la lista es el orden del escalonado.frameId(string) — El fotograma del fotograma clave inicial, compartido por todas las capas.opts(table, opcional)to(string) — Obligatorio. El id del fotograma del fotograma clave final: un fotograma posterior en la misma capa. Los intermedios son los fotogramas estrictamente entre ambos; el fotograma final conserva tu propio dibujo.from({ dx, dy, scaleX, scaleY, rotation, skewX, skewY, opacity }, each optional (missing = no change: 0, 1, 0, 0, 1); predeterminado no change) — La pose en el fotograma clave inicial (normalmente se deja como está).end({ dx, dy, scaleX, scaleY, rotation, skewX, skewY, opacity }, each optional (missing = no change: 0, 1, 0, 0, 1); predeterminado no change) — La pose que se alcanza en el fotograma clave final: traslación en píxeles del sprite, escala (1 = igual), rotación y sesgo en grados, multiplicador de opacidad 0..1.ease(TweenEaseFamily: "linear" | "hold" | "sine" | "quad" | "cubic" | "quart" | "quint" | "expo" | "circ" | "back" | "elastic" | "bounce"; predeterminado "quad") — La curva de suavizado de todas las pistas. Se ignora si se indicasteps.mode(TweenEaseMode: "in" | "out" | "inOut"; predeterminado "inOut") — Qué extremo de la interpolación modelaease(lo ignoran linear y hold).overshoot(number 0–10) — Suavizado back: cuánto se carga o se pasa (por omisión 1.70158). Solo con ease = "back".amplitude(number 1–10) — Suavizado elastic: tamaño del pico (por omisión 1). Solo con ease = "elastic".period(number 0.01–1) — Suavizado elastic: longitud de la oscilación como fracción del tramo (por omisión 0.3). Solo con ease = "elastic".bounces(integer 1–8) — Suavizado bounce: número de aterrizajes (por omisión 4). Solo con ease = "bounce".steps(integer 1–64) — Cuantiza el progreso en esta cantidad de saltos iguales (un aspecto escalonado, sostenido) en lugar de una curva suave.curve(a list of 2-32 anchors { x, y, inX?, inY?, outX?, outY?, corner? }; the first is x = 0, y = 0 and the last x = 1, y = 1, and x rises along the list) — Una curva de suavizado dibujada que pasa por esos anclajes (bézier cúbicas; inX/inY y outX/outY son los tiradores como desplazamientos desde el anclaje, 0 por omisión). Reemplaza aeaseysteps.trackEasing({ position?, scale?, rotation?, skew?, opacity?, color? }, each an easing table with the same keys as the easing options (ease, mode, overshoot, amplitude, period, bounces, steps, curve)) — Suavizado de pistas individuales, que reemplaza al predeterminado solo en esas pistas.color({ hue?, saturation?, lightness?, tint? }: hue in degrees (-360..360), saturation and lightness -100..100, tint 0..1) — Ajustes de color que se alcanzan en la pose final, aplicados a la imagen inicial (Tono/Saturación HSL y luego el tinte). Los campos omitidos quedan neutros (0). El suavizado de la pistacolorlos modela.colorFrom(the same fields as color; predeterminado all neutral) — Los ajustes de color en el fotograma clave inicial (normalmente se dejan como están).tintColor(color ("#rgb", "#rrggbb[aa]" or { r, g, b, a }); predeterminado "#ffffff") — El color hacia el que mezcla el tinte (su alfa se ignora).ramp({ first, last, shift, wrap? }: palette indices first..last (0-255), shift in whole places (-255..255), wrap true by default) — Solo sprites indexados: los píxeles cuyo índice de paleta está en first..last (sin contar el índice transparente) avanzan por ese tramo de la paletashiftlugares a lo largo del tramo, dando la vuelta al pasar los extremos con wrap y deteniéndose en ellos si no. Se ignora en los demás modos de color. El suavizado de la pistacolorlo modela.path(TweenPath: "straight" | "arc" | "wave" | "zigzag" | "shake" | "custom"; predeterminado "straight") — El recorrido que sigue la posición entre las poses, como un desplazamiento respecto a la línea recta.points(a list of 2-64 anchors { x, y, inX?, inY?, outX?, outY?, corner? } in sprite pixels relative to the start cel's position; inX/inY and outX/outY are the handles as offsets from the anchor (0 by default)) — trayectoria custom: la ruta dibujada, una Bézier cúbica por los anclajes, recorrida a velocidad constante. Obligatoria con path = "custom". El primer anclaje es la posiciónfromy el último la posiciónend: sifromoendomiten dx/dy se toman de ahí, y los que se den deben coincidir.orient(boolean; predeterminado false) — Gira el dibujo para que siga la dirección de avance por la trayectoria (se suma a la rotación; sin giro al inicio). Usaresample(RotSprite es buena opción).height(number) — Trayectoria arc: la altura de la joroba en píxeles. Por omisión 8.pathAmplitude(number) — Trayectorias wave, zigzag y shake: el desplazamiento en píxeles. Por omisión 4.cycles(number 0–64) — Trayectorias wave y zigzag: cuántas ondas completas de largo. Por omisión 1.phase(number -1–1) — Trayectoria wave: en qué punto de la onda empieza, en vueltas. Por omisión 0.seed(integer ≥ 0) — Trayectoria shake: la semilla aleatoria; una misma semilla siempre vibra de la misma manera. Por omisión 1.fade(TweenFade: "alpha" | "dither"; predeterminado "alpha") — Cómo se muestra la pista de opacidad: opacidad parcial o una disolución con tramado de píxeles enteros.ditherPattern(TweenDither: "bayer2" | "bayer4" | "bayer8" | "cluster"; predeterminado "bayer4") — El patrón con el que se disuelve un fundido con tramado, fijo al lienzo para que no se arrastre cuando el dibujo se mueve. Darlo implica fade = "dither".crossfade(boolean; predeterminado false) — Funde el dibujo inicial con el propio dibujo del fotograma clave final (según el suavizado de la pista de opacidad), con tramado o mezclado segúnfade. El dibujo del fotograma clave final pasa a ser una entrada: editarlo vuelve a generar la interpolación.delay(integer 0–4096; predeterminado 0) — Fotogramas en que se mantiene la pose inicial antes de moverse; después el movimiento ocupa el resto del tramo.trackDelay({ position?, scale?, rotation?, skew?, opacity?, color? }, each a whole number of frames (0-4096)) — Retardos para pistas concretas, que sustituyendelaysolo en esas pistas.preset(a preset recipe, as app.tweenPreset returns: { from, end, easing, path, squash, pivotX, pivotY, exposure, shortestRotation, pingPong, trackEasing?, color?, orient?, fade?, delay?, trackDelay? } with distances relative to the start cel's size) — Crea la interpolación a partir de un preajuste, adaptado a la celda inicial (las distancias son fracciones de su tamaño; los retardos, fracciones del tramo). Junto a él solo se pueden darto,resample,subpixel,timing,autoRegenerate,fade,ditherPattern,crossfade,delayyorient, que sustituyen los del preajuste.squash(number 0–1; predeterminado 0) — Aplastamiento y estiramiento según la velocidad, con el volumen preservado.pivotX(number; predeterminado 0.5) — Punto fijo de la escala, la rotación y el sesgo, como fracción del ancho de la celda inicial (0.5 = centro).pivotY(number; predeterminado 0.5) — Lo mismo, como fracción del alto de la celda inicial.pivotSpace(TweenPivotSpace: "cel" | "sprite"; predeterminado "cel") — En qué están pivotX y pivotY. "sprite" los convierte en un punto en píxeles del sprite, el mismo para todas las capas interpoladas con él.resample(TransformInterpolation: "nearest" | "rotsprite" | "bilinear"; predeterminado "nearest") — Cómo se remuestrean los píxeles cuando cambian la escala, la rotación o el sesgo. Una traslación pura siempre copia los píxeles exactamente.subpixel(TweenSubpixel: "round" | "floor" | "monotonic"; predeterminado "round") — Cómo caen las posiciones fraccionarias sobre píxeles enteros.timing(TweenTiming: "frames" | "time"; predeterminado "frames") — Qué cuenta como progreso.exposure(integer 1–8; predeterminado 1) — Dibuja una de cada N poses y la mantiene ("de dos en dos" = 2).shortestRotation(boolean; predeterminado true) — Rota por el camino corto (el cambio se ajusta a -180..180) en lugar del número exacto de grados.pingPong(boolean; predeterminado false) — Ida y vuelta: el movimiento alcanza la pose final a mitad del tramo y regresa a la pose inicial en el fotograma clave final, así que un bucle que termina donde empezó no necesita un segundo dibujo. El suavizado modela cada mitad.autoRegenerate(boolean; predeterminado true) — Vuelve a dibujar los intermedios por sí solo cuando cambian el fotograma clave inicial o los fotogramas.step(integer 0–4096; predeterminado 0) — Fotogramas entre el inicio de una capa y el de la siguiente (0 = todas a la vez).order(TweenStaggerOrder: "topDown" | "bottomUp" | "given"; predeterminado "topDown") — Qué capa empieza primero.length(TweenStaggerLength: "keep" | "extend"; predeterminado "keep") — Si las capas posteriores terminan a la vez que la primera (keep) o conservan la misma duración del movimiento y terminan más tarde (extend; los fotogramas deben existir).groupPivot(boolean; predeterminado false) — Escala, gira e inclina todas las capas alrededor de un mismo punto: pivotX/pivotY se toman como fracciones del recuadro que rodea todas las celdas iniciales, así las capas se mueven juntas como un bloque.
Devuelve (table): Los ids de las interpolaciones, uno por capa, en el orden de layerIds.
app.tweenPreset(id) — pura
Un preajuste de interpolación integrado por su id, o nil. Pasa su recipe como opción preset de app.setTween: app.setTween(layerId, frameId, { to = endFrameId, preset = app.tweenPreset("popIn").recipe }).
id(string) — El id de un preajuste integrado, p. ej. "popIn" o "slideInLeft".
Devuelve (table): El preajuste, { id, name, description, frames, recipe }: recipe es la receta relativa de interpolación que acepta la opción preset de app.setTween; nil para un id desconocido.
app.tweenPresets() — pura
Los preajustes de interpolación integrados (aparecer y desvanecer, con y sin tramado, brotar, caer, deslizamientos, entrada en picado, sacudida, salto, aplastar y estirar, flotar, balanceo, giro, parpadeo...), en el orden en que los lista el inspector de interpolación. Tus propios preajustes viven en el editor de tu dispositivo y no aparecen.
Devuelve (table): Una lista de preajustes, cada uno { id, name, description, frames, recipe }: recipe es la receta relativa de interpolación que acepta la opción preset de app.setTween.
En Markdown: frames.md.