Il tuo primo script

Scrivi un breve script Lua che disegna un sole, eseguilo, annullalo e salvalo.

Gli script sono piccoli programmi Lua che disegnano e modificano lo sprite al posto tuo: tutto quello che puoi fare con gli strumenti, uno script lo può fare con il codice. Qui vediamo come scriverne uno che disegna un sole su un nuovo livello. Richiede circa cinque minuti, e non serve aver mai programmato.

Crea uno script

Apri uno sprite (va bene uno nuovo da 32×32) e scegli Script > Nuovo script.... Dai allo script il nome "Sun" e premi Crea.

Si apre il pannello Script con alcune righe di commento (righe che iniziano con --, che Lua ignora). Ha un editor di codice, una barra degli strumenti in alto e un'area di output in basso. Nel layout predefinito è ancorato a destra della tela, così vedi entrambi insieme (puoi spostarlo come qualsiasi pannello: vedi L'area di lavoro).

Il pannello Script con il codice dello script Sun, con i pulsanti Esegui, Salva bozza e Pubblica in alto e la riga stampata nell'area di output sottoIl pannello Script con il codice dello script Sun, con i pulsanti Esegui, Salva bozza e Pubblica in alto e la riga stampata nell'area di output sotto
Il pannello Script con lo script del sole, dopo l'esecuzione

Scrivilo

Sostituisci i commenti con questo:

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

Cosa fa:

  • app.addLayer aggiunge un livello chiamato "Sun" e ne restituisce l'id; app.getActiveFrameId restituisce il fotogramma in cui ti trovi. Ogni comando di disegno richiede un livello e un fotogramma, come uno strumento dipinge sul livello attivo nel fotogramma corrente.
  • app.getCanvasWidth e app.getCanvasHeight leggono le dimensioni dello sprite, così il sole sta in qualsiasi tela. Le coordinate sono in pixel, con (0, 0) nell'angolo in alto a sinistra.
  • app.drawLine e app.drawEllipse funzionano esattamente come gli strumenti Linea e Ellisse. Tutto ciò che non passi (qui, il pennello) viene dalle impostazioni correnti dello strumento.
  • print scrive una riga nell'area di output.

Mentre scrivi, l'editor suggerisce le funzioni app.; punta il cursore su una per leggere cosa fa.

Eseguilo

Premi Esegui (il pulsante play) nella barra degli strumenti del pannello. L'area di output dice "Drew a sun 17 pixels across.", e la timeline ha un nuovo livello, "Sun", con il sole sulla tela accanto al pannello.

Se qualcosa non va, l'area di output mostra l'errore e la riga in cui è avvenuto viene evidenziata. Correggilo ed esegui di nuovo.

Annullalo

Tutto ciò che un'esecuzione modifica è un solo passo di annullamento: premi Ctrl+Z e il livello e il sole spariscono insieme. Cambia un colore o il + 5 che imposta la lunghezza dei raggi, ed esegui di nuovo.

Salvalo

Premi Salva bozza (il pulsante disco). Lo script viene salvato in questo browser, come i tuoi sprite, e un * dopo il suo nome nel pannello indica modifiche non salvate. Per riaprirlo più tardi, scegli Script > Apri il mio script...; anche gli ultimi cinque script aperti sono elencati subito sotto nel menu Script.

Pubblica condivide uno script nella libreria di script; serve un account con Sync (vedi la guida allo scripting).

Passi successivi