Seu primeiro script

Escreva um pequeno script Lua que desenha um sol, execute-o, desfaça-o e salve-o.

Scripts são pequenos programas em Lua que desenham e editam seu sprite por você: tudo o que você faz com as ferramentas, um script faz com código. Aqui você vai escrever um que desenha um sol em uma nova camada. Leva uns cinco minutos, e você não precisa ter programado antes.

Crie um script

Abra um sprite (um novo de 32×32 serve) e escolha Scripts > Novo script.... Dê o nome "Sun" ao script e clique em Criar.

O painel Scripts abre com algumas linhas de comentário (linhas que começam com --, que o Lua ignora). Ele tem um editor de código, uma barra de ferramentas no topo e uma área de saída na parte de baixo. No layout padrão, ele fica acoplado à direita da tela, para você ver os dois ao mesmo tempo (você pode movê-lo como qualquer painel: veja O espaço de trabalho).

O painel Scripts mostrando o código do script Sun, com os botões Executar, Salvar rascunho e Publicar no topo e a linha que ele imprimiu na área de saída abaixoO painel Scripts mostrando o código do script Sun, com os botões Executar, Salvar rascunho e Publicar no topo e a linha que ele imprimiu na área de saída abaixo
O painel Scripts com o script do sol, depois de executá-lo

Escreva o código

Substitua os comentários por isto:

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

O que ele faz:

  • app.addLayer adiciona uma camada chamada "Sun" e devolve o id dela; app.getActiveFrameId devolve o quadro em que você está. Todo comando de desenho recebe uma camada e um quadro, assim como uma ferramenta pinta na camada ativa no quadro atual.
  • app.getCanvasWidth e app.getCanvasHeight leem o tamanho do sprite, então o sol cabe em qualquer tela. As coordenadas são em pixels, com (0, 0) no canto superior esquerdo.
  • app.drawLine e app.drawEllipse funcionam exatamente como as ferramentas Linha e Elipse. Tudo o que você não informa (aqui, o pincel) vem das configurações da ferramenta atual.
  • print escreve uma linha na área de saída.

Enquanto você digita, o editor sugere funções app.; aponte para uma para ler o que ela faz.

Execute

Clique em Executar (o botão de play) na barra de ferramentas do painel. A área de saída diz "Drew a sun 17 pixels across.", e a linha do tempo ganha uma nova camada, "Sun", com o sol na tela ao lado do painel.

Se algo der errado, a área de saída mostra o erro e a linha em que ele aconteceu fica destacada. Corrija e execute de novo.

Desfaça

Tudo o que uma execução muda é um único passo de desfazer: use Ctrl+Z e a camada e o sol somem juntos. Mude uma cor ou o + 5 que define o comprimento dos raios, e execute de novo.

Salve

Clique em Salvar rascunho (o botão de disquete). O script é salvo neste navegador, como seus sprites, e um * depois do nome no painel indica alterações não salvas. Para abri-lo de novo mais tarde, escolha Scripts > Abrir meu script...; os últimos cinco scripts que você abriu também aparecem logo abaixo dele no menu Scripts.

Publicar compartilha um script na biblioteca de scripts; é preciso ter uma conta com o Sync (veja o guia de scripting).

Próximos passos