Usando propriedades de Evento (Versão Vídeo )
-
0:01 - 0:03Tenho essa página
com uma foto do Winston. -
0:03 - 0:07Está ficando frio aqui,
e o Winston está ficando velho. -
0:07 - 0:09Ele gostaria de ter uma barba.
-
0:09 - 0:11Eu mesma poderia desenhar a barba.
-
0:11 - 0:14Mas acho que seria mais legal se
o usuário pudesse desenhar a barba -
0:14 - 0:16no Winston ele mesmo,
entretanto eles querem que seja -
0:16 - 0:20uma barba grande, com parte
por fazer, o que eles quiserem -
0:20 - 0:23Como podemos fazer isso ?
-
0:23 - 0:29Um modo é adicionar um evento de captura
para o evento "mouseMove" na imagem. -
0:29 - 0:33Assim nossa função seria executada
sempre que o usuário mover o mouse -
0:33 - 0:34sobre do rosto.
-
0:34 - 0:38Vamos fazer isso, usando
o que acabamos de aprender. -
0:38 - 0:41O primeiro passo é achar
o elemento, a imagem. -
0:41 - 0:45[Digitando]
-
0:47 - 0:50..."face", já que estou usando esse Id.
-
0:50 - 0:54O segundo passo é definir a
função que será executada. -
0:54 - 0:58E vamos começar com uma bem simples
só pra ter certeza de que funciona, -
0:58 - 1:02e iremos implementá-la melhor depois.
-
1:02 - 1:05[digitando]
-
1:12 - 1:13Ok.
-
1:13 - 1:18E o último passo é
conectar isso a isso, -
1:18 - 1:23para saber que a função foi executada
quando o 'mouseMove' for capturado. -
1:23 - 1:28Então escreveremos
'face.addEventListener("mousemove",' -
1:28 - 1:32e então passar o
nome da função, `onMouseMove`. -
1:32 - 1:37Agora, pare o passo-a-passo, e tente
mover seu mouse sobre o rosto. -
1:37 - 1:38Você viu a mensagem?
-
1:40 - 1:44Ok, espero que você tenha visto
assim o evento está funcionando. -
1:44 - 1:47Mas não é isso que
queremos que o nosso faça. -
1:47 - 1:50Queremos que ele
desenhe, não escreva um texto. -
1:50 - 1:53Como podemos
desenhar em uma página? -
1:53 - 1:58Poderiámos usar a tag "" e
desenhar alguns pixels nela, como fazemos -
1:58 - 2:01com programa ProcessingJS aqui.
-
2:01 - 2:07Mas só estamos desenhando a barba,
que é um monte de pontos pretos. -
2:07 - 2:12Então podíamos apenas criar uma
para cada ponto, e posicionar a -
2:12 - 2:14com um posicionamento "absolute".
-
2:14 - 2:18Deixe-me mostrar como fazer isso
com um folículo de barba -
2:18 - 2:25Vou criar a com a classe
"beard", e associar um CSS a ele. -
2:25 - 2:29Pra criar o estilo da
barba, que colaremos aqui. -
2:30 - 2:32Deixe-me arrumar isso.
-
2:32 - 2:36Como você pode ver nossa barba é
um fundo negro, de 5 por 5 pixels, -
2:36 - 2:41é preciso uma borda com um raio de
2 pixels para fazer esse ponto redondo, -
2:41 - 2:45e está usando um esquema
de posicionamento absoluto. -
2:45 - 2:48Normalmente, a
aparece embaixo do imagem. -
2:48 - 2:51Como fazemos para que ela
apareça encima do rosto ? -
2:51 - 2:55Estamos usando posicionamento,
absoluto, ou seja, devemos usar -
2:55 - 3:00as propriedades `top` e `left`
para dizer exatamente oque deve -
3:00 - 3:02ser posicionado,
agora está como absoluto. -
3:02 - 3:08Vamos mudar para
`top: 80px;`, e `left:15px;`. -
3:08 - 3:09Lindo.
-
3:09 - 3:14Agora que temos isso funcionando em HTML,
vamos fazer isso funcionar em JavaScript, -
3:14 - 3:19De modo que o usuário crie dinamicamente
essa toda vez que mover o mouse. -
3:19 - 3:23Voltemos para a
nossa função JavaScript. -
3:23 - 3:26A primeira coisa é criar a ,
-
3:26 - 3:31Que podemos fazer com a função
"document.createElement()" -
3:31 - 3:34Isso será uma .
-
3:34 - 3:40A segunda coisa a fazer é incluir
essa classe: "beard.className = "beard";". -
3:40 - 3:42Então temos essa
, flutuando pelo espaço. -
3:42 - 3:47Passo final, fixá-la no corpo.
-
3:47 - 3:52Certo, basicamente fizemos em JavaScript
o que tinhamos feito em HTML, -
3:52 - 3:55Agora podemos apagar esse HTML.
-
3:55 - 3:59Agora você deve pausar o passo-a-passo
e tentar clicar no Winston. -
3:59 - 4:00Veja o que acontece.
-
4:02 - 4:05Você viu um folículo de barba aparecer?
-
4:05 - 4:07E você tentar clicar várias vezes ?
-
4:07 - 4:11Se sim, provavelmente percebeu que
o segundo click não fez nada. -
4:11 - 4:14Ou pelo menos pareceu que não fez nada.
-
4:14 - 4:18Isso porque todas as tem o mesmo
valor para "top" e "left", -
4:18 - 4:21Então as novas somente são
empilhadas uma encima da outra. -
4:21 - 4:25Queremos que a seja
criada onde tiver um click. -
4:25 - 4:30Como descobrimos
onde o mouse está ? -
4:30 - 4:34Como se sabe, o navegador
grava muitas informações. -
4:34 - 4:38Cada vez que qualquer evento
de usuário ocorre, como a localização. -
4:38 - 4:41E o navegador te passa essa
informação toda vez -
4:41 - 4:43chamando sua função do evento listner.
-
4:43 - 4:47Mas onde, como, podemos
obter essa informação incrível ? -
4:47 - 4:51Vou digitar uma letra,
pra te dar dica. -
4:51 - 4:56Esse 'e' aqui, é o objeto de
informação do evento. -
4:56 - 5:00E o navegador envia isso como o
primeiro argumento sempre que chama -
5:00 - 5:02uma função que capta eventos.
-
5:02 - 5:06Não precisávamos disso antes, então não
me preocupei com a lista de argumentos. -
5:06 - 5:09Mas agora que vamos usá-la,
Vou dar um nome a ela para ficar -
5:09 - 5:12mais fácil referenciar dentro da função.
-
5:12 - 5:15Em JavaScript, uma função pode ser
chamada com qualquer quantidade -
5:15 - 5:19de argumentos, mesmo se a função
não fizer referência a nenhum deles. -
5:19 - 5:23Então sempre estamos recebendo essa
informação, apenas não sabíamos disso. -
5:23 - 5:28Agora vou imprimir a mensagem
`e`:`console.log(e)`. -
5:28 - 5:32Pare o passo-a-passo, clique no
Winston e verifique seu console. -
5:32 - 5:34Você deverá ver o objeto
de evento na tela, -
5:34 - 5:37e navegar por todas as
propriedades dele. -
5:39 - 5:43Há duas propriedades do evento em
particular que estamos muito interessados. -
5:43 - 5:46"clientX" e "clientY".
-
5:46 - 5:49Elas gravam as coordenadas x e y
do evento, e é isso que nós vamos usar. -
5:49 - 5:51para posicionar a barba.
-
5:51 - 6:02vamos configurar o começo da barba igual a
"e.clientY", mais "px", por unidades. -
6:02 - 6:10E a esquerda igual a "e.clientX",
mais "px" por unidades. -
6:10 - 6:14Agora pause e tente o mouse
sobre a imagem. -
6:14 - 6:16Desenhe a barba do Winston.
-
6:18 - 6:19Bem legal, não ?
-
6:19 - 6:23Aposto que você pensou em um monte
de desenhos legais que você pode fazer, -
6:23 - 6:26usando "clientX" e "clientY".
-
6:26 - 6:29E como você pode ver no console,
tem monte de outras propriedades -
6:29 - 6:31No objeto de evento que você
também pode usar. -
6:31 - 6:35O mais últil, creio, que
os referentes ao teclado. -
6:35 - 6:38Então você pode descobrir
que teclas o usuário pressionou. -
6:38 - 6:41quando ocorreu o evento,
e usar isso para fazer uma -
6:41 - 6:44interface acessível por teclado,
ou um jogo bem divertido. -
6:44 - 6:47Mais uma coisa.
-
6:47 - 6:50Você não precisa chamar o
argumento de "e". -
6:50 - 6:57Isso é típico, mas ele também pode ser
chamado de "evt", ou "event". -
6:57 - 7:01Não importa como você chama
isso, desde que se refira ao -
7:01 - 7:04ao primeiro argumento que o
navegador passa para a sua função, -
7:04 - 7:09e desde que você faça a referência
do mesmo modo depois. -
7:09 - 7:13Se você está tendo problema com
isso, use o log do console para -
7:13 - 7:16depurar a aplicação e entender
o que está acontecendo. -
7:16 - 7:18Quando você é um desenvolvedor web,
-
7:18 - 7:22O console é o seu
melhor amigo use-o! -
7:22 - 7:23[Legendado por Valter Bigeli]
[Revisado por Paulo Trentin]
- Title:
- Usando propriedades de Evento (Versão Vídeo )
- Description:
-
Essa é a gravação desse vídeo do passo-a-passo postado para faciliar a criação de legendas.
Por favor assista passo-a-passo interativo na Khan Academy, onde você parar o vídeo e editar o código
e ver em uma resolução melhor:
http://www.khanacademy.org/computer-programming - Video Language:
- English
- Duration:
- 07:23
Paulo Trentin edited Portuguese, Brazilian subtitles for Using the event properties (Video Version) | ||
Valter Bigeli edited Portuguese, Brazilian subtitles for Using the event properties (Video Version) | ||
Valter Bigeli edited Portuguese, Brazilian subtitles for Using the event properties (Video Version) | ||
Valter Bigeli edited Portuguese, Brazilian subtitles for Using the event properties (Video Version) | ||
Valter Bigeli edited Portuguese, Brazilian subtitles for Using the event properties (Video Version) | ||
Valter Bigeli edited Portuguese, Brazilian subtitles for Using the event properties (Video Version) | ||
Valter Bigeli edited Portuguese, Brazilian subtitles for Using the event properties (Video Version) | ||
Valter Bigeli edited Portuguese, Brazilian subtitles for Using the event properties (Video Version) |