Ebenen
Ebenen erstellen, anordnen und konfigurieren. Gruppen sind Ordner für Ebenen: Die parentId einer Ebene nennt ihre Gruppe (nil auf oberster Ebene), und die Positionen von app.moveLayer zählen innerhalb einer Gruppe (0 = unten). Eine Gruppe auszublenden oder zu sperren blendet alles darin aus oder sperrt es. Eine Gruppe mit voller Deckkraft und dem Mischmodus "normal" ist Pass-through (ihre Ebenen mischen sich direkt in das, was darunter liegt), solange ihr Flag isolated nicht gesetzt ist; eine isolierte Gruppe oder jede andere Deckkraft oder jeder andere Modus setzt ihre Ebenen zuerst zusammen. (25 Funktionen)
app.addAdjustmentLayer(name?, effects?, parentId?) — ändert, rückgängig machbar
Fügt eine Einstellungsebene über allen anderen Ebenen hinzu (oder in der Gruppe parentId): Sie enthält keine Pixel, und ihre Effekte verändern alles, was unter ihr in ihrer Gruppe (oder im ganzen Bild) zusammengesetzt wird, in jedem Frame, mit der Deckkraft der Ebene. Beschneide sie, um nur die Ebene darunter zu ändern. Macht sie aktiv.
name(string, optional) — Standard ist "Adjustment N".effects(table, optional) — Ihre Effekte, wie bei app.setLayerEffects (nur Farb- und Pixelarten). Weggelassen = noch keine.parentId(string, optional) — Eine Gruppe, der sie hinzugefügt wird (über ihren Ebenen); weggelassen = oberste Ebene.
Gibt zurück (string): Die ID der neuen Ebene.
app.addGroup(name?, parentId?) — ändert, rückgängig machbar
Fügt eine neue leere Ebenengruppe über allen anderen Ebenen hinzu (oder in der Gruppe parentId) und macht sie aktiv. Lege Ebenen mit app.moveLayer oder app.groupLayers hinein.
name(string, optional) — Standard ist "Group N".parentId(string, optional) — Eine Gruppe, in die sie verschachtelt wird (über ihren Ebenen); weggelassen = oberste Ebene.
Gibt zurück (string): Die ID der neuen Gruppe.
app.addLayer(name?, parentId?) — ändert, rückgängig machbar
Fügt eine neue leere Ebene über allen anderen Ebenen hinzu (oder über den Ebenen der Gruppe parentId) und macht sie aktiv.
name(string, optional) — Standard ist "Layer N".parentId(string, optional) — Eine Gruppe, der sie hinzugefügt wird (über ihren Ebenen); weggelassen = oberste Ebene.
Gibt zurück (string): Die ID der neuen Ebene.
app.backgroundFromLayer(layerId?, backgroundColor?) — ändert, rückgängig machbar, wird auf einer gesperrten Ebene abgelehnt
Ebene > „Hintergrund aus Ebene“: wandelt eine Bildebene in die Hintergrundebene des Sprites um: nach unten verschoben, "Background" genannt und vollständig deckend gemacht (transparente Pixel bekommen die Hintergrundfarbe). Wirft einen Fehler, wenn der Sprite schon eine Hintergrundebene hat.
layerId(string, optional) — Die Bildebene, die umgewandelt wird; weggelassen = die unterste Bildebene.backgroundColor(color, optional) — Was die transparenten Pixel füllt. Standard ist die aktuelle Hintergrundfarbe.
Gibt zurück (string): Die ID der umgewandelten Ebene.
app.bakeLayerEffects(layerId) — ändert, rückgängig machbar, wird auf einer gesperrten Ebene abgelehnt
Rendert die aktiven Effekte einer Bildebene in alle ihre Cels und entfernt sie, als ein einziger Rückgängig-Schritt. Cels wachsen, um Schatten und Umrisse aufzunehmen (auf die Leinwand beschnitten); indizierte Sprites lassen das Ergebnis auf die Palette jedes Frames einrasten. Wirft einen Fehler bei einer gesperrten Ebene oder einer ohne Effekte.
layerId(string)
Gibt nichts zurück.
app.duplicateLayer(layerId) — ändert, rückgängig machbar
Klont eine Ebene (eine Gruppe mit allem darin) und jedes darauf gemalte Cel, fügt die Kopie direkt über dem Original ein und macht sie aktiv.
layerId(string)
Gibt zurück (string): Die Ebenen-ID der Kopie.
app.flattenGroup(layerId) — ändert, rückgängig machbar, wird auf einer gesperrten Ebene abgelehnt
Ersetzt eine Gruppe und alles darin durch eine Bildebene (gleiche ID, gleicher Name, gleiche Deckkraft, gleicher Mischmodus und gleicher Platz), die in jedem Frame ihre zusammengesetzten Ebenen enthält. Ausgeblendete, Entwurfs- und Referenzebenen darin werden gelöscht, wie bei Reduzieren.
layerId(string) — Die Gruppe, die reduziert wird.
Gibt nichts zurück.
app.flattenSprite(visibleOnly?, backgroundColor?) — ändert, rückgängig machbar
Ebene > Reduzieren: fasst jede Ebene der obersten Ebene (auch ausgeblendete) pro Frame zu einer Ebene zusammen, genau so, wie es mit ihnen sichtbar gerendert wird; mit visibleOnly nur die sichtbaren, und die ausgeblendeten bleiben. Eine sichtbare Hintergrundebene bleibt die Hintergrundebene (vollständig deckend); sonst ist das Ergebnis eine neue Ebene namens Flattened. Wirft einen Fehler, wenn nichts zu reduzieren ist.
visibleOnly(boolean, optional) — Sichtbare reduzieren: reduziert nur die sichtbaren Ebenen der obersten Ebene und behält die ausgeblendeten. Standard false: alles, auch ausgeblendete Ebenen.backgroundColor(color, optional) — Nur wenn das Ergebnis die Hintergrundebene ist (eine sichtbare Hintergrundebene wird reduziert): was die Pixel füllt, die nichts abdeckt. Standard ist die aktuelle Hintergrundfarbe.
Gibt nichts zurück.
app.getActiveLayerId() — liest
Die ID der aktuell aktiven Ebene oder nil, wenn keine aktiv ist.
Gibt zurück (string): Ebenen-ID oder nil.
app.getLayer(layerId) — liest
Eine Ebene, in der Form eines Eintrags von app.getLayers, oder nil, wenn es keine solche Ebene gibt.
layerId(string)
Gibt zurück (table): Ebenen-Tabelle oder nil.
app.getLayers() — liest
Jede Ebene, von unten nach oben (eine Gruppe liegt direkt über ihren Ebenen), als { id, name, type ("image" | "tilemap" | "reference" | "group"), parentId (die Gruppe, in der sie liegt; nil auf oberster Ebene), depth (0 = oberste Ebene), index (0 = Unterseite des ganzen Stapels), position (Platz unter den Ebenen des übergeordneten Elements, 0 = unten; was app.moveLayer erwartet), opacity (0-1), visible, locked, movementLocked, background (true auf der Hintergrundebene), clipped (eine Schnittmaske: zeigt nur dort, wo die nächste darunterliegende nicht beschnittene Ebene Pixel hat), continuous (app.duplicateFrame verknüpft ihre Cels, statt sie zu kopieren), blendMode, collapsed (Gruppen), tileset = { tileWidth, tileHeight, tileCount, matchFlipH, matchFlipV, matchRotate } (Tilemap-Ebenen), reference = { width, height } (Referenzebenen) }. visible/locked/movementLocked sind die eigenen Flags der Ebene; eine ausgeblendete, gesperrte oder bewegungsgesperrte Gruppe blendet alles darin ebenfalls aus, sperrt es oder fixiert es.
Gibt zurück (table): Array von Ebenen-Tabellen.
app.getReferenceTransform(layerId, frameId) — liest
Wo das Bild einer Referenzebene auf einem Frame sitzt, als { x, y, width, height } in Sprite-Pixeln, oder nil, wenn sie dort leer ist.
layerId(string) — Eine Referenzebene.frameId(string)
Gibt zurück (table): Transformations-Tabelle oder nil.
app.groupLayers(layerIds, name?) — ändert, rückgängig machbar
Legt Ebenen (Gruppen mit allem darin) in eine neue Gruppe an der Position der obersten, behält ihre Reihenfolge und macht die Gruppe aktiv.
layerIds(table) — Array von Ebenen-IDs, alle in derselben Gruppe (oder alle auf oberster Ebene).name(string, optional) — Standard ist "Group N".
Gibt zurück (string): Die ID der neuen Gruppe.
app.layerFromBackground() — ändert, rückgängig machbar
Ebene > „Ebene aus Hintergrund“: macht die Hintergrundebene zu einer gewöhnlichen Ebene (Transparenz und Verschieben sind wieder erlaubt). Wirft einen Fehler, wenn der Sprite keine Hintergrundebene hat.
Gibt zurück (string): Die ID der umgewandelten Ebene.
app.mergeLayerDown(layerId) — ändert, rückgängig machbar, wird auf einer gesperrten Ebene abgelehnt
Setzt eine Ebene (oder eine ganze Gruppe, wie sie gerendert wird) auf die Ebene direkt darunter in derselben Gruppe zusammen und löscht sie dann; eine Schnittmasken-Basis nimmt ihre beschnittenen Ebenen mit. Das Ergebnis sieht gleich aus, und die Ebene darunter hat danach 100 % Deckkraft und den Mischmodus normal. Wirft einen Fehler, wenn darunter in ihrer Gruppe nichts liegt, das Darunterliegende keine Bildebene ist oder eine nicht beschnittene Ebene auf eine beschnittene zusammengeführt würde.
layerId(string)
Gibt nichts zurück.
app.mergeLayers(layerIds) — ändert, rückgängig machbar, wird auf einer gesperrten Ebene abgelehnt
Führt Ebenen (Gruppen mit allem darin) genau so, wie sie zusammen gerendert werden, zu einer Bildebene zusammen, an der Position der obersten und mit ihrem Namen, und macht sie aktiv. Ist die Hintergrundebene dabei, ist das Ergebnis die Hintergrundebene.
layerIds(table) — Array von zwei oder mehr Ebenen-IDs, alle in derselben Gruppe (oder alle auf oberster Ebene). Ausgeblendete werden ebenfalls zusammengeführt.
Gibt zurück (string): Die ID der zusammengeführten Ebene.
app.mergeLayerUp(layerId) — ändert, rückgängig machbar, wird auf einer gesperrten Ebene abgelehnt
Führt eine Bildebene in die Ebene direkt darüber in derselben Gruppe zusammen: Das Ergebnis sieht genau aus wie Nach unten zusammenführen dieser Ebene, übernimmt aber ihren Namen und ihre Farbmarkierung. Wirft einen Fehler, wenn darüber in ihrer Gruppe nichts liegt oder sie keine Bildebene ist.
layerId(string)
Gibt nichts zurück.
app.moveLayer(layerId, position, parentId?) — ändert, rückgängig machbar
Verschiebt eine Ebene (eine Gruppe mit allem darin) an eine neue Position, optional in eine andere Gruppe. Wirft einen Fehler, wenn eine Gruppe in sich selbst verschoben wird.
layerId(string)position(number) — Ihr Platz danach unter den anderen Ebenen des Elternobjekts (0 = unten), auf den gültigen Bereich begrenzt.parentId(string, optional) — Die Gruppe, in die sie verschoben wird; "" = oberste Ebene; weggelassen = bleibt in ihrer aktuellen Gruppe.
Gibt nichts zurück.
app.removeLayer(layerId) — ändert, rückgängig machbar
Entfernt eine Ebene und alle darauf gemalten Cels; eine Gruppe zu entfernen entfernt alles darin. Wirft einen Fehler, wenn danach keine (Nicht-Gruppen-)Ebene übrig wäre.
layerId(string)
Gibt nichts zurück.
app.setActiveLayer(layerId) — ändert
Macht eine Ebene zur aktiven (was ein Klick darauf im Ebenen-Bedienfeld tut). Keine rückgängig zu machende Bearbeitung.
layerId(string)
Gibt nichts zurück.
app.setLayerEffects(layerId, effects) — ändert, rückgängig machbar
Setzt die nicht destruktiven Effekte einer Ebene: Die Operationen laufen jedes Mal, wenn der Sprite zusammengesetzt wird, der Reihe nach auf den Pixeln der Ebene (bei einer Gruppe auf ihren zusammengesetzten untergeordneten Ebenen) und werden nie in die Cels geschrieben (das erledigt app.bakeLayerEffects). Auf einer gesperrten Ebene erlaubt. Nicht für Referenzebenen; die Hintergrundebene nimmt nur Farbeffekte.
layerId(string)effects(table) — Die gesamte Effektliste der Ebene, unterster zuerst ({}leert sie). Jeder Eintrag ist{ kind = "levels", ...that effect's fields, enabled = true }; lies die aktuelle Liste ausapp.getLayers, ändere sie und gib sie zurück (Einträge behalten ihreid). Arten: brightnessContrast, hueSaturation, colorCurve, levels, threshold, gradientMap, colorBalance, invert, replaceColor, posterize nehmen die Felder der passenden app.*-Anpassung; outline nimmtplace,width,shape,color; shadow nimmtplace,dx,dy,spread,shape,softness(0-8 px weicher Rand),edge("dithered", "hard" oder "smooth": wie ein weicher Rand gezeichnet wird),color; noise (amount,size,mono,seed), dither (pattern,levels,strength), scanlines (period,thickness,offset,strength,mask), vignette (strength,radius,softness,color), paletteSwap (from,to,tolerance), blur (radius,shape,edge,colors), bloom (threshold,radius,intensity,edge,colors), edgeDetect (strength,mode,invert,color), smoother (size), pixelate (size), chromatic (dx,dy), wave (axis,amplitude,wavelength,phase), bend (axis,amount), distortion (axis,band,amount,density,seed), parallax (shift), echo (count,dx,dy,fade), antiAlias (a,anyA,b,steps,into,strength,colors: wie bei app.antiAlias), autoShade (target,base,angle,highlights,shadows,width,hueShift,chroma,rim,outline,colors,ramp: wie bei app.autoShade). Blur und bloom lassen sich für Pixel-Art einrasten:edgeist "smooth", "hard" oder "dithered",colorsist "any" oder "palette" (die Palette des Frames, die Vorgabe bei indizierten Sprites). Animiere einen Zahlen- oder Farbparameter mittracks = { dx = { { frame = frameId, value = 0 }, { frame = otherFrameId, value = 4, easing = ... } } }(der Pfad ist das Feld odervalue.gamma,shadows.redund so weiter; ein fehlendes easing ist linear) undtiming = "frames"oder"time". Jede Farbe (color,below,above,from,to, diecoloreines Verlaufs-Stopps,a,b,base, dervalueeines Farb-Keyframes) ist"#rgb","#rrggbb","#rrggbbaa"oder{ r, g, b, a }(aist standardmäßig 255); die Farblisten (fromundtovon paletteSwap,rampvon autoShade) nehmen diese ebenfalls an, Alpha wird ignoriert. Lesezugriffe (app.getLayers) liefern Farben als Tabellen{ r, g, b, a }und Farblisten als Strings"#rrggbb".
Gibt nichts zurück.
app.setLayerProps(layerId, props) — ändert, rückgängig machbar
Aktualisiert eine oder mehrere Eigenschaften einer Ebene oder Gruppe.
layerId(string)props(table) — Weggelassene Schlüssel bleiben unverändert.name(string) — Der Name der Ebene.opacity(number 0–1) — Deckkraft der Ebene. Eine Gruppe unter 1 setzt ihre Ebenen zuerst zusammen (sie ist isoliert).visible(boolean) — Ob die Ebene angezeigt (und für Skripte exportiert) wird. Eine ausgeblendete Gruppe blendet alles darin aus.locked(boolean) — Der Inhalt einer gesperrten Ebene kann durch nichts geändert werden, auch nicht durch Skripte. Eine Gruppe zu sperren sperrt alles darin.movementLocked(boolean) — Die Cels einer bewegungsgesperrten Ebene können nicht verschoben werden (movePixels, moveCels, eine Verschiebung per transformPixels, Platzierung von Referenzen) – Malen funktioniert weiterhin. Die Bewegung einer Gruppe zu sperren sperrt alles darin.clipped(boolean) — Schnittmaske: Die Ebene zeigt nur dort etwas, wo die nächste nicht beschnittene Ebene darunter in derselben Gruppe (ihre Basis) Pixel hat, und der Mischmodus der Basis gilt für den ganzen Stapel. Nicht für Referenzebenen oder die Hintergrundebene.draft(boolean) — Entwurfsebene: wird beim Arbeiten angezeigt, aber nie exportiert, reduziert oder gestempelt (eine Entwurfsgruppe nimmt alles darin mit). Nicht für Referenzebenen oder die Hintergrundebene.continuous(boolean) — Durchgehende Ebene (die von Aseprite): Neuer Frame (app.duplicateFrame ohnelinked) verknüpft das Cel dieser Ebene mit dem des Originals, statt es zu kopieren. Nicht für Gruppen.isolated(boolean) — Nur Gruppen: setzt zuerst die Ebenen der Gruppe für sich zusammen und mischt dann das Ergebnis als ein Bild (die normale Gruppe von Photoshop). Ist es aus, ist eine Gruppe mit normalem Mischmodus und Deckkraft 1 Pass-through: Ihre Ebenen mischen sich direkt in das, was darunter liegt. Jeder andere Mischmodus oder jede andere Deckkraft isoliert die Gruppe trotzdem.blendMode(BlendMode: "normal" | "multiply" | "screen" | "overlay" | "darken" | "lighten" | "color-dodge" | "color-burn" | "hard-light" | "soft-light" | "difference" | "exclusion" | "hue" | "saturation" | "color" | "luminosity" | "addition" | "subtract" | "divide") — Wie sich die Ebene mit denen darunter mischt. Eine Gruppe mit einem anderen Modus als "normal" setzt ihre Ebenen zuerst zusammen (sie ist isoliert).
Gibt nichts zurück.
app.setReferenceTransform(layerId, frameId, x, y, width, height) — ändert, rückgängig machbar, wird auf einer gesperrten Ebene abgelehnt
Positioniert die Platzierung einer Referenzebene auf einem Frame neu bzw. ändert ihre Größe (im Sprite-Raum). Eine Breite oder Höhe <= 0 leert sie stattdessen (auf diesem Frame leer). Wirft einen Fehler, wenn layerId keine Referenzebene ist.
layerId(string)frameId(string)x(number)y(number)width(number)height(number)
Gibt nichts zurück.
app.stampVisible(name?) — ändert, rückgängig machbar
Fügt eine neue Ebene hinzu, die alles Sichtbare enthält, pro Frame, genau so, wie Reduzieren es ergäbe (Referenz- und Entwurfsebenen ausgelassen), aber alle Ebenen behält, über dem obersten Block der aktiven Ebene, und macht sie aktiv.
name(string, optional) — Standard ist "Visible".
Gibt zurück (string): Die ID der neuen Ebene.
app.ungroupLayer(layerId) — ändert, rückgängig machbar
Entfernt eine Gruppe und verschiebt ihre Ebenen an ihre Stelle nach oben. Ihre eigenen Eigenschaften bleiben erhalten; Deckkraft, Mischmodus und Sichtbarkeit der Gruppe entfallen, ohne eingebacken zu werden.
layerId(string) — Eine Gruppe.
Gibt nichts zurück.
Als Markdown: layers.md.