Images et étiquettes
La chronologie : les images, leurs durées et les étiquettes d'animation. (25 fonctions)
app.addFrame(frameId?, durationMs?, before?) — modifie, annulable
Ajoute une nouvelle image vide (« Nouvelle image vide » dans le menu Image), après frameId ou avant avec before. La nouvelle image devient l'image active.
frameId(string, facultatif) — L'image à côté de laquelle insérer. Omets-la (ou passe nil) pour ajouter à la fin.durationMs(number, facultatif) — Par défaut, la durée d'image standard du sprite.before(boolean, facultatif) — True insère la nouvelle image avantframeIdplutôt qu'après, ce qui est le seul moyen d'ajouter une image avant la première. Nécessite unframeId.
Renvoie (string) : L'id de la nouvelle image.
app.addTag(fromFrameId, toFrameId, name?, color?, direction?) — modifie, annulable
Crée une nouvelle étiquette couvrant [fromFrameId, toFrameId].
fromFrameId(string)toFrameId(string)name(string, facultatif) — Par défaut "Tag N".color(string, facultatif) — Couleur hexadécimale.direction(TagDirection: "forward" | "reverse" | "pingpong" | "pingpongReverse", facultatif) — Sens de lecture ; par défaut vers l'avant.
Renvoie (string) : L'id de la nouvelle étiquette.
app.bakeTween(layerId, frameId) — modifie, annulable, refusée sur un calque verrouillé
Retire l'interpolation qui commence à frameId mais garde chaque intermédiaire comme cel ordinaire, qui n'est donc plus redessiné. Une seule étape d'annulation.
layerId(string) — Un calque d'image (pas l'arrière-plan).frameId(string) — L'image de l'image clé de départ : c'est le cel propre au calque à cet endroit (pas un lien) qui est interpolé.
Ne renvoie rien.
app.duplicateFrame(frameId, linked?) — modifie, annulable
Duplique une image (et ses cels) juste après elle, en rendant la copie active (« Nouvelle image » dans le menu Image).
frameId(string)linked(boolean, facultatif) — True lie chaque cel copié à celui de l'original (images partagées), false copie chacun ; omis, les calques continus se lient et les autres se copient.
Renvoie (string) : L'id de l'image copiée.
app.getActiveFrameId() — lit
L'id de l'image actuellement active, ou nil s'il n'y en a pas.
Renvoie (string) : Id d'image ou nil.
app.getFrame(frameId) — lit
Une image sous la forme { id, index, durationMs }, ou nil s'il n'y a pas de telle image.
frameId(string)
Renvoie (table) : Table d'image ou nil.
app.getFrames() — lit
Chaque image dans l'ordre de la chronologie, sous la forme { id, index (0 = première), durationMs }.
Renvoie (table) : Tableau de tables d'image.
app.getTags() — lit
Chaque étiquette d'animation sous la forme { id, name, fromFrameId, toFrameId, fromIndex, toIndex (indices d'images inclus), color (hex), direction ("forward" | "reverse" | "pingpong" | "pingpongReverse"), repeat (nombre de lectures avant de continuer ; absent = boucle indéfiniment) }.
Renvoie (table) : Tableau de tables d'étiquette.
app.moveFrame(frameId, toIndex) — modifie, annulable
Déplace une image à une nouvelle position dans la chronologie.
frameId(string)toIndex(number) — Position de destination dans l'ordre final, limitée à la plage valide.
Ne renvoie rien.
app.regenerateTween(layerId, frameId, revertFrameIds?) — modifie, annulable, refusée sur un calque verrouillé
Redessine les intermédiaires de l'interpolation qui commence à frameId à partir de son cel de départ. Les images que tu as modifiées à la main sont ignorées, sauf si elles figurent dans revertFrameIds. Une interpolation dont l'image de fin n'existe plus ne peut pas être redessinée. Une seule étape d'annulation ; s'il n'y a rien à changer, aucune n'est ajoutée.
layerId(string) — Un calque d'image (pas l'arrière-plan).frameId(string) — L'image de l'image clé de départ : c'est le cel propre au calque à cet endroit (pas un lien) qui est interpolé.revertFrameIds(table, facultatif) — Une liste d'ids d'images intermédiaires dont les cels modifiés à la main sont aussi redessinés.
Ne renvoie rien.
app.removeFrame(frameId) — modifie, annulable
Retire une image et tous les cels, placements de tuiles et placements de référence qu'elle porte. Lève une erreur s'il s'agit de la dernière image restante.
frameId(string)
Ne renvoie rien.
app.removeTag(tagId) — modifie, annulable
Retire une étiquette (les images qu'elle couvrait ne sont pas touchées).
tagId(string)
Ne renvoie rien.
app.removeTween(layerId, frameId) — modifie, annulable, refusée sur un calque verrouillé
Retire l'interpolation qui commence à frameId en supprimant ses intermédiaires générés (les images que tu as modifiées à la main restent comme cels ordinaires). Une seule étape d'annulation.
layerId(string) — Un calque d'image (pas l'arrière-plan).frameId(string) — L'image de l'image clé de départ : c'est le cel propre au calque à cet endroit (pas un lien) qui est interpolé.
Ne renvoie rien.
app.reverseFrames(fromFrameId?, toFrameId?) — modifie, annulable
Inverse l'ordre des images d'une plage (toutes les images si omise) en une seule étape d'annulation. Les cels, liens, placements de tilemap et transformations de référence suivent leurs images ; les étiquettes continuent de couvrir les mêmes positions.
fromFrameId(string, facultatif) — Première image de la plage ; omets-la (avec toFrameId) pour inverser toutes les images.toFrameId(string, facultatif) — Dernière image de la plage (incluse).
Ne renvoie rien.
app.setActiveFrame(frameId) — modifie
Rend une image active (ce que fait un clic dessus dans la chronologie). Ce n'est pas une modification annulable.
frameId(string)
Ne renvoie rien.
app.setAllFrameDurations(durationMs) — modifie, annulable
Donne à chaque image du sprite la même durée de lecture.
durationMs(number)
Ne renvoie rien.
app.setFrameDuration(frameId, durationMs) — modifie, annulable
Définit la durée de lecture d'une image.
frameId(string)durationMs(number) — Millisecondes entières, 1-65535.
Ne renvoie rien.
app.setFrameProps(frameId, props) — modifie, annulable
Définit l'étiquette de couleur et/ou le verrou d'une image.
frameId(string)props(table) — Les clés omises restent inchangées.color(string) — L'étiquette de la chronologie de l'image sous la forme "#rrggbb" ; une chaîne vide l'efface.locked(boolean) — Les cels d'une image verrouillée ne peuvent être modifiés par rien, scripts compris, et l'image ne peut pas être retirée, déplacée ni voir sa durée modifiée.
Ne renvoie rien.
app.setTagProps(tagId, props) — modifie, annulable
Met à jour une ou plusieurs propriétés d'une étiquette.
tagId(string)props(table) — Les clés omises restent inchangées.name(string) — Le nom de l'étiquette.color(string) — La couleur de l'étiquette sous la forme "#rrggbb".direction(TagDirection: "forward" | "reverse" | "pingpong" | "pingpongReverse") — Sens de lecture.fromFrameId(string) — La première image de la plage.toFrameId(string) — La dernière image de la plage.repeat(integer ≥ 0) — Combien de fois la lecture joue l'étiquette avant de continuer (l'option Répétitions de l'étiquette dans Aseprite) ; 0 boucle sans fin.
Ne renvoie rien.
app.setTween(layerId, frameId, opts?) — modifie, annulable, refusée sur un calque verrouillé
Interpole le cel d'un calque à frameId vers une image ultérieure : les images intermédiaires reçoivent de vrais cels (l'image du cel de départ déplacée, mise à l'échelle, pivotée, inclinée et fondue selon les options, avec l'easing choisi) qui restent liés à la recette, et se redessinent donc quand le cel de départ change. Remplace une interpolation qui commence déjà là. Une seule étape d'annulation. Les images sur lesquelles tu as dessiné restent telles quelles. Renvoie l'id de l'interpolation.
layerId(string) — Un calque d'image (pas l'arrière-plan).frameId(string) — L'image de l'image clé de départ : c'est le cel propre au calque à cet endroit (pas un lien) qui est interpolé.opts(table, facultatif)to(string) — Obligatoire. L'id de l'image de l'image clé de fin : une image ultérieure du même calque. Les intermédiaires sont les images strictement comprises entre les deux ; l'image de fin garde ton propre dessin.from({ dx, dy, scaleX, scaleY, rotation, skewX, skewY, opacity }, each optional (missing = no change: 0, 1, 0, 0, 1); par défaut no change) — La pose à l'image clé de départ (on n'y touche généralement pas).end({ dx, dy, scaleX, scaleY, rotation, skewX, skewY, opacity }, each optional (missing = no change: 0, 1, 0, 0, 1); par défaut no change) — La pose atteinte à l'image clé de fin : translation en pixels du sprite, échelle (1 = identique), rotation et inclinaison en degrés, multiplicateur d'opacité 0..1.ease(TweenEaseFamily: "linear" | "hold" | "sine" | "quad" | "cubic" | "quart" | "quint" | "expo" | "circ" | "back" | "elastic" | "bounce"; par défaut "quad") — La courbe d'easing de chaque piste. Ignorée quandstepsest donné.mode(TweenEaseMode: "in" | "out" | "inOut"; par défaut "inOut") — Quelle extrémité de l'interpolationeasefaçonne (ignoré par linear et hold).overshoot(number 0–10) — Easing back : l'amplitude de son recul ou de son dépassement (1.70158 par défaut). Uniquement avec ease = "back".amplitude(number 1–10) — Easing elastic : taille du pic (1 par défaut). Uniquement avec ease = "elastic".period(number 0.01–1) — Easing elastic : longueur de l'oscillation en fraction de la plage (0.3 par défaut). Uniquement avec ease = "elastic".bounces(integer 1–8) — Easing bounce : nombre de rebonds (4 par défaut). Uniquement avec ease = "bounce".steps(integer 1–64) — Quantifie la progression en ce nombre de sauts égaux (un aspect par paliers, maintenu) au lieu d'une courbe lisse.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) — Une courbe d'easing dessinée passant par ces ancres (courbes de Bézier cubiques ; inX/inY et outX/outY sont les poignées, en décalage par rapport à l'ancre, 0 par défaut). Remplaceeaseetsteps.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)) — Easing de pistes individuelles, qui remplace celui par défaut pour ces seules pistes.color({ hue?, saturation?, lightness?, tint? }: hue in degrees (-360..360), saturation and lightness -100..100, tint 0..1) — Ajustements de couleur atteints à la pose de fin, appliqués à l'image de départ (Teinte/Saturation HSL, puis la teinte de coloration). Les champs omis restent neutres (0). L'easing de la pistecolorles façonne.colorFrom(the same fields as color; par défaut all neutral) — Les ajustements de couleur à l'image clé de départ (on n'y touche généralement pas).tintColor(color ("#rgb", "#rrggbb[aa]" or { r, g, b, a }); par défaut "#ffffff") — La couleur vers laquelle la teinte mélange (son alpha est ignoré).ramp({ first, last, shift, wrap? }: palette indices first..last (0-255), shift in whole places (-255..255), wrap true by default) — Sprites indexés uniquement : les pixels dont l'indice de palette est compris entre first..last (l'indice transparent exclu) avancent le long de cette portion de la palette deshiftplaces sur la plage, en cyclant au-delà des extrémités avec wrap et en s'y arrêtant sinon. Ignoré dans les autres modes colorimétriques. L'easing de la pistecolorle façonne.path(TweenPath: "straight" | "arc" | "wave" | "zigzag" | "shake" | "custom"; par défaut "straight") — Le trajet que suit la position entre les poses, sous forme de décalage par rapport à la ligne droite.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)) — trajectoire custom : le trajet dessiné, une Bézier cubique passant par les ancres, parcourue à vitesse constante. Obligatoire avec path = "custom". La première ancre est la positionfromet la dernière la positionend: quandfromouendomettent dx/dy, ils sont pris de là, et ceux qui sont donnés doivent correspondre.orient(boolean; par défaut false) — Tourne le dessin pour suivre la direction du déplacement le long de la trajectoire (ajouté à la rotation ; aucune rotation au départ). Utiliseresample(RotSprite est un bon choix).height(number) — Trajectoire arc : la hauteur de la bosse en pixels. 8 par défaut.pathAmplitude(number) — Trajectoires wave, zigzag et shake : le décalage en pixels. 4 par défaut.cycles(number 0–64) — Trajectoires wave et zigzag : combien d'ondes complètes de long. 1 par défaut.phase(number -1–1) — Trajectoire wave : où dans l'onde elle commence, en tours. 0 par défaut.seed(integer ≥ 0) — Trajectoire shake : la graine aléatoire ; une même graine produit toujours les mêmes secousses. 1 par défaut.fade(TweenFade: "alpha" | "dither"; par défaut "alpha") — Comment la piste d'opacité s'affiche : opacité partielle, ou dissolution tramée de pixels entiers.ditherPattern(TweenDither: "bayer2" | "bayer4" | "bayer8" | "cluster"; par défaut "bayer4") — La trame à travers laquelle se dissout un fondu tramé, fixée au canevas pour ne pas glisser quand le dessin bouge. La donner implique fade = "dither".crossfade(boolean; par défaut false) — Fond le dessin de départ dans le dessin de l'image clé de fin (selon l'easing de la piste d'opacité), tramé ou mélangé selonfade. Le dessin de l'image clé de fin devient alors une entrée : le modifier redessine l'interpolation.delay(integer 0–4096; par défaut 0) — Images pendant lesquelles la pose de départ est gardée avant de bouger ; le mouvement remplit ensuite le reste de l'intervalle.trackDelay({ position?, scale?, rotation?, skew?, opacity?, color? }, each a whole number of frames (0-4096)) — Délais pour certaines pistes, qui remplacentdelaypour ces pistes seulement.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) — Construit l'interpolation à partir d'un préréglage, mis à l'échelle du cel de départ (les distances sont des fractions de sa taille, les délais des fractions de l'intervalle). Seulsto,resample,subpixel,timing,autoRegenerate,fade,ditherPattern,crossfade,delayetorientpeuvent l'accompagner ; ils remplacent ceux du préréglage.squash(number 0–1; par défaut 0) — Écrasement et étirement selon la vitesse, à volume constant.pivotX(number; par défaut 0.5) — Point fixe de l'échelle, de la rotation et de l'inclinaison, en fraction de la largeur du cel de départ (0.5 = centre).pivotY(number; par défaut 0.5) — Idem, en fraction de la hauteur du cel de départ.pivotSpace(TweenPivotSpace: "cel" | "sprite"; par défaut "cel") — Dans quelle unité sont pivotX et pivotY. "sprite" en fait un point en pixels du sprite, le même pour chaque calque interpolé avec.resample(TransformInterpolation: "nearest" | "rotsprite" | "bilinear"; par défaut "nearest") — Comment les pixels sont rééchantillonnés quand l'échelle, la rotation ou l'inclinaison changent. Une translation pure copie toujours les pixels exactement.subpixel(TweenSubpixel: "round" | "floor" | "monotonic"; par défaut "round") — Comment les positions fractionnaires tombent sur des pixels entiers.timing(TweenTiming: "frames" | "time"; par défaut "frames") — Ce que compte la progression.exposure(integer 1–8; par défaut 1) — Dessine une pose sur N et la maintient ("on twos" = 2).shortestRotation(boolean; par défaut true) — Tourne par le chemin le plus court (la variation ramenée à -180..180) plutôt que du nombre exact de degrés.pingPong(boolean; par défaut false) — Aller-retour : le mouvement atteint la pose de fin à la moitié de la plage et revient à la pose de départ à l'image clé de fin, donc une boucle qui finit là où elle a commencé n'a pas besoin d'un second dessin. L'easing façonne chaque moitié.autoRegenerate(boolean; par défaut true) — Redessine les intermédiaires tout seul quand l'image clé de départ ou les images changent.
Renvoie (string) : L'id de l'interpolation.
app.setTweenChain(layerId, frameIds, opts?) — modifie, annulable, refusée sur un calque verrouillé
Interpole à travers plusieurs images clés d'un même calque en une seule étape : une interpolation de chaque image clé à la suivante, toutes avec les mêmes options (comme app.setTween sans to). Les interpolations qui commencent déjà à ces images sont remplacées ; les autres du calque ne doivent pas se chevaucher. Une seule étape d'annulation. Renvoie les ids des interpolations, dans l'ordre.
layerId(string) — Un calque d'image (pas l'arrière-plan).frameIds(table) — Les images clés de la chaîne sous forme de liste d'ids d'images, la plus ancienne d'abord (2 ou plus). Une interpolation va de chacune à la suivante, donc les voisines partagent une image clé ; chacune sauf la dernière a besoin de son propre cel.opts(table, facultatif)from({ dx, dy, scaleX, scaleY, rotation, skewX, skewY, opacity }, each optional (missing = no change: 0, 1, 0, 0, 1); par défaut no change) — La pose à l'image clé de départ (on n'y touche généralement pas).end({ dx, dy, scaleX, scaleY, rotation, skewX, skewY, opacity }, each optional (missing = no change: 0, 1, 0, 0, 1); par défaut no change) — La pose atteinte à l'image clé de fin : translation en pixels du sprite, échelle (1 = identique), rotation et inclinaison en degrés, multiplicateur d'opacité 0..1.ease(TweenEaseFamily: "linear" | "hold" | "sine" | "quad" | "cubic" | "quart" | "quint" | "expo" | "circ" | "back" | "elastic" | "bounce"; par défaut "quad") — La courbe d'easing de chaque piste. Ignorée quandstepsest donné.mode(TweenEaseMode: "in" | "out" | "inOut"; par défaut "inOut") — Quelle extrémité de l'interpolationeasefaçonne (ignoré par linear et hold).overshoot(number 0–10) — Easing back : l'amplitude de son recul ou de son dépassement (1.70158 par défaut). Uniquement avec ease = "back".amplitude(number 1–10) — Easing elastic : taille du pic (1 par défaut). Uniquement avec ease = "elastic".period(number 0.01–1) — Easing elastic : longueur de l'oscillation en fraction de la plage (0.3 par défaut). Uniquement avec ease = "elastic".bounces(integer 1–8) — Easing bounce : nombre de rebonds (4 par défaut). Uniquement avec ease = "bounce".steps(integer 1–64) — Quantifie la progression en ce nombre de sauts égaux (un aspect par paliers, maintenu) au lieu d'une courbe lisse.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) — Une courbe d'easing dessinée passant par ces ancres (courbes de Bézier cubiques ; inX/inY et outX/outY sont les poignées, en décalage par rapport à l'ancre, 0 par défaut). Remplaceeaseetsteps.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)) — Easing de pistes individuelles, qui remplace celui par défaut pour ces seules pistes.ends(a list of end pose tables, one per segment (same fields as end)) — Uniquement pour app.setTweenChain : une pose de fin différente pour chaque segment, dans l'ordre ; chacune remplaceendpour son segment.color({ hue?, saturation?, lightness?, tint? }: hue in degrees (-360..360), saturation and lightness -100..100, tint 0..1) — Ajustements de couleur atteints à la pose de fin, appliqués à l'image de départ (Teinte/Saturation HSL, puis la teinte de coloration). Les champs omis restent neutres (0). L'easing de la pistecolorles façonne.colorFrom(the same fields as color; par défaut all neutral) — Les ajustements de couleur à l'image clé de départ (on n'y touche généralement pas).tintColor(color ("#rgb", "#rrggbb[aa]" or { r, g, b, a }); par défaut "#ffffff") — La couleur vers laquelle la teinte mélange (son alpha est ignoré).ramp({ first, last, shift, wrap? }: palette indices first..last (0-255), shift in whole places (-255..255), wrap true by default) — Sprites indexés uniquement : les pixels dont l'indice de palette est compris entre first..last (l'indice transparent exclu) avancent le long de cette portion de la palette deshiftplaces sur la plage, en cyclant au-delà des extrémités avec wrap et en s'y arrêtant sinon. Ignoré dans les autres modes colorimétriques. L'easing de la pistecolorle façonne.path(TweenPath: "straight" | "arc" | "wave" | "zigzag" | "shake" | "custom"; par défaut "straight") — Le trajet que suit la position entre les poses, sous forme de décalage par rapport à la ligne droite.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)) — trajectoire custom : le trajet dessiné, une Bézier cubique passant par les ancres, parcourue à vitesse constante. Obligatoire avec path = "custom". La première ancre est la positionfromet la dernière la positionend: quandfromouendomettent dx/dy, ils sont pris de là, et ceux qui sont donnés doivent correspondre.orient(boolean; par défaut false) — Tourne le dessin pour suivre la direction du déplacement le long de la trajectoire (ajouté à la rotation ; aucune rotation au départ). Utiliseresample(RotSprite est un bon choix).height(number) — Trajectoire arc : la hauteur de la bosse en pixels. 8 par défaut.pathAmplitude(number) — Trajectoires wave, zigzag et shake : le décalage en pixels. 4 par défaut.cycles(number 0–64) — Trajectoires wave et zigzag : combien d'ondes complètes de long. 1 par défaut.phase(number -1–1) — Trajectoire wave : où dans l'onde elle commence, en tours. 0 par défaut.seed(integer ≥ 0) — Trajectoire shake : la graine aléatoire ; une même graine produit toujours les mêmes secousses. 1 par défaut.fade(TweenFade: "alpha" | "dither"; par défaut "alpha") — Comment la piste d'opacité s'affiche : opacité partielle, ou dissolution tramée de pixels entiers.ditherPattern(TweenDither: "bayer2" | "bayer4" | "bayer8" | "cluster"; par défaut "bayer4") — La trame à travers laquelle se dissout un fondu tramé, fixée au canevas pour ne pas glisser quand le dessin bouge. La donner implique fade = "dither".crossfade(boolean; par défaut false) — Fond le dessin de départ dans le dessin de l'image clé de fin (selon l'easing de la piste d'opacité), tramé ou mélangé selonfade. Le dessin de l'image clé de fin devient alors une entrée : le modifier redessine l'interpolation.delay(integer 0–4096; par défaut 0) — Images pendant lesquelles la pose de départ est gardée avant de bouger ; le mouvement remplit ensuite le reste de l'intervalle.trackDelay({ position?, scale?, rotation?, skew?, opacity?, color? }, each a whole number of frames (0-4096)) — Délais pour certaines pistes, qui remplacentdelaypour ces pistes seulement.squash(number 0–1; par défaut 0) — Écrasement et étirement selon la vitesse, à volume constant.pivotX(number; par défaut 0.5) — Point fixe de l'échelle, de la rotation et de l'inclinaison, en fraction de la largeur du cel de départ (0.5 = centre).pivotY(number; par défaut 0.5) — Idem, en fraction de la hauteur du cel de départ.pivotSpace(TweenPivotSpace: "cel" | "sprite"; par défaut "cel") — Dans quelle unité sont pivotX et pivotY. "sprite" en fait un point en pixels du sprite, le même pour chaque calque interpolé avec.resample(TransformInterpolation: "nearest" | "rotsprite" | "bilinear"; par défaut "nearest") — Comment les pixels sont rééchantillonnés quand l'échelle, la rotation ou l'inclinaison changent. Une translation pure copie toujours les pixels exactement.subpixel(TweenSubpixel: "round" | "floor" | "monotonic"; par défaut "round") — Comment les positions fractionnaires tombent sur des pixels entiers.timing(TweenTiming: "frames" | "time"; par défaut "frames") — Ce que compte la progression.exposure(integer 1–8; par défaut 1) — Dessine une pose sur N et la maintient ("on twos" = 2).shortestRotation(boolean; par défaut true) — Tourne par le chemin le plus court (la variation ramenée à -180..180) plutôt que du nombre exact de degrés.pingPong(boolean; par défaut false) — Aller-retour : le mouvement atteint la pose de fin à la moitié de la plage et revient à la pose de départ à l'image clé de fin, donc une boucle qui finit là où elle a commencé n'a pas besoin d'un second dessin. L'easing façonne chaque moitié.autoRegenerate(boolean; par défaut true) — Redessine les intermédiaires tout seul quand l'image clé de départ ou les images changent.
Renvoie (table) : Les ids des interpolations, une par segment, dans l'ordre.
app.setTweenEnd(layerId, frameId, toFrameId) — modifie, annulable, refusée sur un calque verrouillé
Déplace la fin de l'interpolation qui commence à frameId vers une autre image et la redessine. Les intermédiaires qui tombent hors de la nouvelle plage sont supprimés (ou gardés comme cels ordinaires si tu les as modifiés) ; l'image de fin elle-même n'est jamais touchée. Échoue si la nouvelle plage chevauchait une autre interpolation du calque. Une seule étape d'annulation.
layerId(string) — Un calque d'image (pas l'arrière-plan).frameId(string) — L'image de l'image clé de départ : c'est le cel propre au calque à cet endroit (pas un lien) qui est interpolé.toFrameId(string) — La nouvelle image clé de fin : une image ultérieure du même calque.
Ne renvoie rien.
app.setTweenStagger(layerIds, frameId, opts?) — modifie, annulable, refusée sur un calque verrouillé
Interpole plusieurs calques avec une même recette (les mêmes options que app.setTween, ou un préréglage mis à l'échelle du cel de départ de chaque calque), chaque calque commençant step images après le précédent. Avec groupPivot, les calques se mettent à l'échelle et tournent autour d'un point commun et bougent comme un bloc rigide. Les interpolations qui commencent déjà là sont remplacées. Une seule étape d'annulation. Renvoie les ids des interpolations, dans l'ordre de layerIds.
layerIds(table) — Les calques à interpoler, en liste d'ids : des calques d'image (pas l'Arrière-plan), chacun avec son propre cel sur frameId. Avec order = "given", l'ordre de la liste est l'ordre du décalage.frameId(string) — L'image de l'image clé de départ, commune à tous les calques.opts(table, facultatif)to(string) — Obligatoire. L'id de l'image de l'image clé de fin : une image ultérieure du même calque. Les intermédiaires sont les images strictement comprises entre les deux ; l'image de fin garde ton propre dessin.from({ dx, dy, scaleX, scaleY, rotation, skewX, skewY, opacity }, each optional (missing = no change: 0, 1, 0, 0, 1); par défaut no change) — La pose à l'image clé de départ (on n'y touche généralement pas).end({ dx, dy, scaleX, scaleY, rotation, skewX, skewY, opacity }, each optional (missing = no change: 0, 1, 0, 0, 1); par défaut no change) — La pose atteinte à l'image clé de fin : translation en pixels du sprite, échelle (1 = identique), rotation et inclinaison en degrés, multiplicateur d'opacité 0..1.ease(TweenEaseFamily: "linear" | "hold" | "sine" | "quad" | "cubic" | "quart" | "quint" | "expo" | "circ" | "back" | "elastic" | "bounce"; par défaut "quad") — La courbe d'easing de chaque piste. Ignorée quandstepsest donné.mode(TweenEaseMode: "in" | "out" | "inOut"; par défaut "inOut") — Quelle extrémité de l'interpolationeasefaçonne (ignoré par linear et hold).overshoot(number 0–10) — Easing back : l'amplitude de son recul ou de son dépassement (1.70158 par défaut). Uniquement avec ease = "back".amplitude(number 1–10) — Easing elastic : taille du pic (1 par défaut). Uniquement avec ease = "elastic".period(number 0.01–1) — Easing elastic : longueur de l'oscillation en fraction de la plage (0.3 par défaut). Uniquement avec ease = "elastic".bounces(integer 1–8) — Easing bounce : nombre de rebonds (4 par défaut). Uniquement avec ease = "bounce".steps(integer 1–64) — Quantifie la progression en ce nombre de sauts égaux (un aspect par paliers, maintenu) au lieu d'une courbe lisse.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) — Une courbe d'easing dessinée passant par ces ancres (courbes de Bézier cubiques ; inX/inY et outX/outY sont les poignées, en décalage par rapport à l'ancre, 0 par défaut). Remplaceeaseetsteps.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)) — Easing de pistes individuelles, qui remplace celui par défaut pour ces seules pistes.color({ hue?, saturation?, lightness?, tint? }: hue in degrees (-360..360), saturation and lightness -100..100, tint 0..1) — Ajustements de couleur atteints à la pose de fin, appliqués à l'image de départ (Teinte/Saturation HSL, puis la teinte de coloration). Les champs omis restent neutres (0). L'easing de la pistecolorles façonne.colorFrom(the same fields as color; par défaut all neutral) — Les ajustements de couleur à l'image clé de départ (on n'y touche généralement pas).tintColor(color ("#rgb", "#rrggbb[aa]" or { r, g, b, a }); par défaut "#ffffff") — La couleur vers laquelle la teinte mélange (son alpha est ignoré).ramp({ first, last, shift, wrap? }: palette indices first..last (0-255), shift in whole places (-255..255), wrap true by default) — Sprites indexés uniquement : les pixels dont l'indice de palette est compris entre first..last (l'indice transparent exclu) avancent le long de cette portion de la palette deshiftplaces sur la plage, en cyclant au-delà des extrémités avec wrap et en s'y arrêtant sinon. Ignoré dans les autres modes colorimétriques. L'easing de la pistecolorle façonne.path(TweenPath: "straight" | "arc" | "wave" | "zigzag" | "shake" | "custom"; par défaut "straight") — Le trajet que suit la position entre les poses, sous forme de décalage par rapport à la ligne droite.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)) — trajectoire custom : le trajet dessiné, une Bézier cubique passant par les ancres, parcourue à vitesse constante. Obligatoire avec path = "custom". La première ancre est la positionfromet la dernière la positionend: quandfromouendomettent dx/dy, ils sont pris de là, et ceux qui sont donnés doivent correspondre.orient(boolean; par défaut false) — Tourne le dessin pour suivre la direction du déplacement le long de la trajectoire (ajouté à la rotation ; aucune rotation au départ). Utiliseresample(RotSprite est un bon choix).height(number) — Trajectoire arc : la hauteur de la bosse en pixels. 8 par défaut.pathAmplitude(number) — Trajectoires wave, zigzag et shake : le décalage en pixels. 4 par défaut.cycles(number 0–64) — Trajectoires wave et zigzag : combien d'ondes complètes de long. 1 par défaut.phase(number -1–1) — Trajectoire wave : où dans l'onde elle commence, en tours. 0 par défaut.seed(integer ≥ 0) — Trajectoire shake : la graine aléatoire ; une même graine produit toujours les mêmes secousses. 1 par défaut.fade(TweenFade: "alpha" | "dither"; par défaut "alpha") — Comment la piste d'opacité s'affiche : opacité partielle, ou dissolution tramée de pixels entiers.ditherPattern(TweenDither: "bayer2" | "bayer4" | "bayer8" | "cluster"; par défaut "bayer4") — La trame à travers laquelle se dissout un fondu tramé, fixée au canevas pour ne pas glisser quand le dessin bouge. La donner implique fade = "dither".crossfade(boolean; par défaut false) — Fond le dessin de départ dans le dessin de l'image clé de fin (selon l'easing de la piste d'opacité), tramé ou mélangé selonfade. Le dessin de l'image clé de fin devient alors une entrée : le modifier redessine l'interpolation.delay(integer 0–4096; par défaut 0) — Images pendant lesquelles la pose de départ est gardée avant de bouger ; le mouvement remplit ensuite le reste de l'intervalle.trackDelay({ position?, scale?, rotation?, skew?, opacity?, color? }, each a whole number of frames (0-4096)) — Délais pour certaines pistes, qui remplacentdelaypour ces pistes seulement.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) — Construit l'interpolation à partir d'un préréglage, mis à l'échelle du cel de départ (les distances sont des fractions de sa taille, les délais des fractions de l'intervalle). Seulsto,resample,subpixel,timing,autoRegenerate,fade,ditherPattern,crossfade,delayetorientpeuvent l'accompagner ; ils remplacent ceux du préréglage.squash(number 0–1; par défaut 0) — Écrasement et étirement selon la vitesse, à volume constant.pivotX(number; par défaut 0.5) — Point fixe de l'échelle, de la rotation et de l'inclinaison, en fraction de la largeur du cel de départ (0.5 = centre).pivotY(number; par défaut 0.5) — Idem, en fraction de la hauteur du cel de départ.pivotSpace(TweenPivotSpace: "cel" | "sprite"; par défaut "cel") — Dans quelle unité sont pivotX et pivotY. "sprite" en fait un point en pixels du sprite, le même pour chaque calque interpolé avec.resample(TransformInterpolation: "nearest" | "rotsprite" | "bilinear"; par défaut "nearest") — Comment les pixels sont rééchantillonnés quand l'échelle, la rotation ou l'inclinaison changent. Une translation pure copie toujours les pixels exactement.subpixel(TweenSubpixel: "round" | "floor" | "monotonic"; par défaut "round") — Comment les positions fractionnaires tombent sur des pixels entiers.timing(TweenTiming: "frames" | "time"; par défaut "frames") — Ce que compte la progression.exposure(integer 1–8; par défaut 1) — Dessine une pose sur N et la maintient ("on twos" = 2).shortestRotation(boolean; par défaut true) — Tourne par le chemin le plus court (la variation ramenée à -180..180) plutôt que du nombre exact de degrés.pingPong(boolean; par défaut false) — Aller-retour : le mouvement atteint la pose de fin à la moitié de la plage et revient à la pose de départ à l'image clé de fin, donc une boucle qui finit là où elle a commencé n'a pas besoin d'un second dessin. L'easing façonne chaque moitié.autoRegenerate(boolean; par défaut true) — Redessine les intermédiaires tout seul quand l'image clé de départ ou les images changent.step(integer 0–4096; par défaut 0) — Images entre le départ d'un calque et celui du suivant (0 = tous ensemble).order(TweenStaggerOrder: "topDown" | "bottomUp" | "given"; par défaut "topDown") — Quel calque commence en premier.length(TweenStaggerLength: "keep" | "extend"; par défaut "keep") — Si les calques suivants finissent en même temps que le premier (keep) ou gardent la même durée de mouvement et finissent plus tard (extend ; les images doivent exister).groupPivot(boolean; par défaut false) — Met à l'échelle, tourne et incline chaque calque autour d'un même point : pivotX/pivotY sont pris comme fractions du cadre autour de tous les cels de départ, si bien que les calques bougent ensemble comme un bloc.
Renvoie (table) : Les ids des interpolations, un par calque, dans l'ordre de layerIds.
app.tweenPreset(id) — pure
Un préréglage d'interpolation intégré par son id, ou nil. Passe sa recipe comme option preset de app.setTween : app.setTween(layerId, frameId, { to = endFrameId, preset = app.tweenPreset("popIn").recipe }).
id(string) — L'id d'un préréglage intégré, par ex. "popIn" ou "slideInLeft".
Renvoie (table) : Le préréglage, { id, name, description, frames, recipe } : recipe est la recette d'interpolation relative que prend l'option preset de app.setTween ; nil pour un id inconnu.
app.tweenPresets() — pure
Les préréglages d'interpolation intégrés (fondus entrant et sortant, tramage entrant et sortant, apparition élastique, chute, glissements, arrivée en piqué, secousse, saut, écrasement et étirement, flottement, balancement, rotation, clignotement...), dans l'ordre de l'inspecteur d'interpolation. Tes propres préréglages restent dans l'éditeur sur ton appareil et ne sont pas listés.
Renvoie (table) : Une liste de préréglages, chacun { id, name, description, frames, recipe } : recipe est la recette d'interpolation relative que prend l'option preset de app.setTween.
En Markdown : frames.md.