Dein erstes Skript
Schreib ein kurzes Lua-Skript, das eine Sonne zeichnet, führ es aus, mach es rückgängig und speichere es.
Skripte sind kleine Lua-Programme, die deinen Sprite für dich zeichnen und bearbeiten: Alles, was du mit den Werkzeugen kannst, kann ein Skript mit Code. Hier schreibst du Schritt für Schritt eines, das eine Sonne auf eine neue Ebene zeichnet. Es dauert etwa fünf Minuten, und du musst vorher nicht programmiert haben.
Ein Skript erstellen
Öffne einen Sprite (ein neuer mit 32×32 reicht) und wähl Skripte > Neues Skript.... Nenn das Skript „Sun“ und drück Erstellen.
Das Bedienfeld Skripte öffnet sich mit ein paar Kommentarzeilen (Zeilen, die mit -- beginnen und
die Lua ignoriert). Es hat einen Code-Editor, eine Werkzeugleiste am oberen Rand und einen
Ausgabebereich unten. Im Standard-Layout dockt es rechts neben der Leinwand an, sodass du beides
gleichzeitig siehst (du kannst es wie jedes Bedienfeld verschieben: siehe
Der Arbeitsbereich).


Schreib es
Ersetze die Kommentare durch dies:
-- Draws a sun on a new layer.
local layer = app.addLayer("Sun")
local frame = app.getActiveFrameId()
local w, h = app.getCanvasWidth(), app.getCanvasHeight()
local cx, cy = w // 2, h // 2
local r = math.min(w, h) // 4
-- the rays: eight short lines around the middle
for i = 0, 7 do
local a = i * math.pi / 4
app.drawLine(layer, frame,
cx + math.floor(math.cos(a) * (r + 2) + 0.5), cy + math.floor(math.sin(a) * (r + 2) + 0.5),
cx + math.floor(math.cos(a) * (r + 5) + 0.5), cy + math.floor(math.sin(a) * (r + 5) + 0.5),
{ color = "#f4a52e" })
end
-- the disc
app.drawEllipse(layer, frame, cx - r, cy - r, cx + r, cy + r, { color = "#ffd34e", fill = "filled" })
print("Drew a sun " .. (r * 2 + 1) .. " pixels across.")Was es tut:
app.addLayerfügt eine Ebene namens „Sun“ hinzu und gibt ihre ID zurück;app.getActiveFrameIdgibt den Frame, auf dem du bist. Jeder Zeichenbefehl nimmt eine Ebene und einen Frame, so wie ein Werkzeug auf der aktiven Ebene im aktuellen Frame malt.app.getCanvasWidthundapp.getCanvasHeightlesen die Größe des Sprites, sodass die Sonne auf jede Leinwand passt. Koordinaten sind Pixel, mit (0, 0) in der linken oberen Ecke.app.drawLineundapp.drawEllipsefunktionieren genau wie die Werkzeuge Linie und Ellipse. Alles, was du nicht übergibst (hier der Pinsel), kommt aus den aktuellen Werkzeugeinstellungen.printschreibt eine Zeile in den Ausgabebereich.
Während du tippst, schlägt der Editor app.-Funktionen vor; zeig auf eine, um zu lesen, was sie tut.
Führ es aus
Drück in der Werkzeugleiste des Bedienfelds Ausführen (die Play-Schaltfläche). Der Ausgabebereich sagt „Drew a sun 17 pixels across.“, und die Zeitleiste hat eine neue Ebene „Sun“, mit der Sonne auf der Leinwand neben dem Bedienfeld.
Stimmt etwas nicht, zeigt der Ausgabebereich den Fehler, und die Zeile, in der er passiert ist, wird hervorgehoben. Behebe ihn und führ es erneut aus.
Mach es rückgängig
Alles, was ein Durchlauf ändert, ist ein Schritt zum Rückgängigmachen: Drück Ctrl+Z, und die
Ebene und die Sonne sind zusammen weg. Ändere eine Farbe oder das + 5, das die Länge der Strahlen
festlegt, und führ es erneut aus.
Speichere es
Drück Entwurf speichern (die Disketten-Schaltfläche). Das Skript wird wie deine Sprites in diesem
Browser gespeichert, und ein * hinter seinem Namen im Bedienfeld zeigt ungespeicherte Änderungen.
Um es später wieder zu öffnen, wähl Skripte > Mein Skript öffnen...; die letzten fünf Skripte, die du geöffnet
hast, stehen außerdem direkt darunter im Menü Skripte.
Veröffentlichen teilt ein Skript in der Skriptbibliothek; dafür brauchst du ein Konto mit Sync (siehe die Skripting-Anleitung).
Nächste Schritte
- Die Skripting-Anleitung behandelt Ausführen, Stoppen, Skriptfenster, Skriptbefehle und die offiziellen Generatoren.
- Die Skripting-API listet jede
app.-Funktion auf, gruppiert nach dem, was sie tun: Zeichnen, Ebenen, Frames, Farbmathematik und mehr.