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 de frameId en lugar de después, que es la única forma de añadir un fotograma antes del primero. Necesita un frameId.

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 indica steps.
    • mode (TweenEaseMode: "in" | "out" | "inOut"; predeterminado "inOut") — Qué extremo de la interpolación modela ease (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 a ease y steps.
    • 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 pista color los 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 paleta shift lugares 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 pista color lo 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ón from y el último la posición end: si from o end omiten 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). Usa resample (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ún fade. 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 sustituyen delay solo 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 dar to, resample, subpixel, timing, autoRegenerate, fade, ditherPattern, crossfade, delay y orient, 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 indica steps.
    • mode (TweenEaseMode: "in" | "out" | "inOut"; predeterminado "inOut") — Qué extremo de la interpolación modela ease (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 a ease y steps.
    • 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 a end en 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 pista color los 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 paleta shift lugares 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 pista color lo 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ón from y el último la posición end: si from o end omiten 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). Usa resample (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ún fade. 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 sustituyen delay solo 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 indica steps.
    • mode (TweenEaseMode: "in" | "out" | "inOut"; predeterminado "inOut") — Qué extremo de la interpolación modela ease (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 a ease y steps.
    • 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 pista color los 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 paleta shift lugares 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 pista color lo 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ón from y el último la posición end: si from o end omiten 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). Usa resample (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ún fade. 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 sustituyen delay solo 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 dar to, resample, subpixel, timing, autoRegenerate, fade, ditherPattern, crossfade, delay y orient, 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.