Aqui você deve ter percebido que definiu uma função em especial
toda vez que você desejou animar seu programa, a função draw.
Lembrando, aqui está nosso programa do carro animado
lembre que temos var x = 11
que é a posição inicial do carro
e var draw contento todo o código de dezenho
e então mudamos x adicionando 3 em cada execução
e então podemos reiniciar e rodar!
Agora que você sabe fazer suas próprias funções,
deve estar se perguntando "e esta função draw? É customizável? É sempre assim?
Bem, esta é uma boa pergunta.
Veja que, em nosso ambiente Khan Academy, existem funções globais especiais,
que eu chamo de "Funções Mágicas", mas é só um nome que dei a elas.
Quando rodamos seu programa, verificamos se você definiu funções com certos nomes,
como draw, e se encontrarmos, nós às chamamos em momentos específicos.
Por exemplo, quando você cria a função draw em seu código,
nós iremos procurá-la e olhar o código dentro dela
e iremos chamar este código várias vezes, tão rápido quanto pudermos.
Se você não definir a função draw, não iremos chamar nada, pois não há nada aqui.
Ou seja, se nós renomearmos a função para drow
certo, não irá funcionar.
Ou para drawCar... ok, não funciona
Então, se renomearmos a função, o programa não a encontra mais
Assim o código não é rodado várias vezes e nada acontece.
Isso significa, que você não deve renomear uma função sua para draw,
a menos que você queira que ela seja chamada várias vezes.
draw não é a única função mágica que existe
Existem outras funções para manipular interações com mouse e teclado
Vamos ver um exemplo de outro programa de animação.
Digamos que queremos desenhar a bola onde o usuário está movendo o mouse
Nós temos draw, fill e então ellipse em (mouseX, mouseY, 10, 10)
Vamos tentar isso. Legal!
Temos algo legal colorindo a bola enquanto movemos.
Este código dentro da função draw, será chamado várias vezes
Por que nós o colocamos dentro da função com nome draw
Ele será chamado mesmo que o usuário não mova o mouse. Está sendo chamado agora.
Como pode ser visto, existe um jeito de fazer isso mais eficiente
o que precisamos mudar é o nome da função draw para mouseMoved
Nosso ambiente sempre verifica se existe a função mouseMoved definida
assim, ele irá chamá-la toda vez que o usuário mover o mouse, veja, funciona.
Mas ele não irá chamá-la se o mouse não estiver se movendo.
Antes quando usamos draw o código era chamado mesmo com o mouse parado.
Agora que usamos mouseMoved só chamamos o código quando o mouse move.
Nosso programa é mais eficiente. Então, se você quer fazer algo quando o mouse move
é melhor deixar o código dentro dentro da função mouseMoved em vez da draw.
Existe muitas outras funções como mouseMoved.
Existem mousePressed, mouseReleased e keyPressed. Basta ler a documentação.
Lembre-se que ao usar funções mágicas, deve chamá-las com o nome correto.
Se não, tenha certeza que criou um novo nome para sua função.
Legendado por [Paulo Trentin] e revisado por [Alef Almeida].