Introdução à programação
com Python em um contexto visual


Parando o draw()

O laço principal do Processing é uma função de nome draw() que devemos definir quando queremos fazer * sketches * animados ou interativos, e cujo conteúdo fica sendo repetido. O Processing, normalmente, chama para nós essa função sem parar, cada ciclo é um * frame * (quadro de uma animação). Vamos ver aqui algumas ‘estratégias alternativas’ à repetição continua do draw().

Um sketch sem draw()

É possível trabalhar com desenhos estáticos sem o draw(), sem setup() também para * sketches * muito simples, ou apenas com setup() como no exemplo abaixo.

Um corpo dedraw() vazio

Para poder usar as funções disparadas por eventos, como key_pressed() ou mouse_pressed() é preciso que seja criada uma função draw(), mesmo que vazia. Em Python é possível criar uma função vazia com a palavra chave pass no corpo da função, algo como ‘passar a vez em um jogo’. Veja abaixo um exemplo com a função mouse_moved().

Nada é desenhado até que o evento do movimento do mouse dispare a função mouse_moved() que desenha as linhas.

Usando noLoop() e loop()

Mesmo com o desenho sendo feito dentro de draw(), como de costume, é possível fazer com que a função pare de repetir, invocando no_loop(). Isso pode ser feito no setup(), dentro do próprio draw() ou em alguma função disparada por evento. Já a função loop(), que faz o draw() voltar a ser executado repetidas vezes, tem que ser invocada dentro de alguma função disparada por evento, comomouse_released() no exemplo abaixo.

draw() para quando um botão do mouse é apertado e volta a repetir quando é solto.

Neste exemplo a função draw() é executada 4 vezes e para, chamando no_loop(), se alguma tecla for apertada, loop() é executada dentro de key_pressed() e temos mais 4 execuções de draw().

Cada vez que uma tecla é pressionada, draw() é executada 4 vezes.

O operador % é usado para obter o resto da divisão do número do frame(frame_count) por 4 . Veja como são os resultados:

frame_count % 4 (resto da divisão por 4)
1 1
2 2
3 3
4 0
5 1
6 2
7 3
8 0

A função redraw()

Por fim vejamos a função redraw(), que quando usada, marca para que seja executado um único * frame * de draw(). No exemplo abaixo, a repetição de draw() está pausada por conta de no_loop() em setup().

Um novo ciclo de draw() é executado quando o mouse for clicado.