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).

Das Bedienfeld Skripte mit dem Code des Skripts „Sun“, mit den Schaltflächen Ausführen, Entwurf speichern und Veröffentlichen oben und der Zeile, die es ausgegeben hat, im Ausgabebereich darunterDas Bedienfeld Skripte mit dem Code des Skripts „Sun“, mit den Schaltflächen Ausführen, Entwurf speichern und Veröffentlichen oben und der Zeile, die es ausgegeben hat, im Ausgabebereich darunter
Das Bedienfeld Skripte mit dem Sonnen-Skript, nach dem Ausführen

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.addLayer fügt eine Ebene namens „Sun“ hinzu und gibt ihre ID zurück; app.getActiveFrameId gibt 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.getCanvasWidth und app.getCanvasHeight lesen die Größe des Sprites, sodass die Sonne auf jede Leinwand passt. Koordinaten sind Pixel, mit (0, 0) in der linken oberen Ecke.
  • app.drawLine und app.drawEllipse funktionieren genau wie die Werkzeuge Linie und Ellipse. Alles, was du nicht übergibst (hier der Pinsel), kommt aus den aktuellen Werkzeugeinstellungen.
  • print schreibt 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