< Return to Video

Usando propriedades de Evento (Versão Vídeo )

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

more » « less
Video Language:
English
Duration:
07:23

Portuguese, Brazilian subtitles

Revisions