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