< Return to Video

이벤트 속성 사용하기(비디오 버전)

  • 0:00 - 0:03
    윈스턴 그림이 있는
    페이지를 가져와봤어요
  • 0:03 - 0:07
    이제 슬슬 추워지고
    윈스턴은 나이가 들어가니까
  • 0:07 - 0:09
    윈스턴은 수염이
    있으면 좋겠대요
  • 0:09 - 0:11
    제가 수염을
    그려줄 수도 있죠
  • 0:11 - 0:12
    하지만 이게
    더 멋질 거에요
  • 0:12 - 0:16
    사용자가 원하는 대로 수염을
    윈스턴에게 그려줄 수 있다면요
  • 0:16 - 0:21
    긴 수염과 까칠한 부분도
    약간 있고 어떤 걸 원하든지요
  • 0:21 - 0:23
    그럼 이걸 어떻게 할 수 있을까요?
  • 0:23 - 0:29
    한 가지 방법은 이미지 위에서의
    마우스 움직임(mouseMove) 이벤트를 넣는 거에요
  • 0:29 - 0:34
    사용자가 마우스를 얼굴 위로
    움직이면 함수가 호출되게요
  • 0:34 - 0:38
    방금 배운 것으로
    한번 해볼게요
  • 0:38 - 0:40
    첫 번째는
    요소를 찾는거에요
  • 0:40 - 0:42
    이미지 말이죠
  • 0:42 - 0:47
    var face = document.getElementById()
  • 0:47 - 0:51
    id는 face라고 하죠
    괜찮은 ID네요
  • 0:51 - 0:54
    두 번째는 콜백함수를
    만드는 거에요
  • 0:54 - 0:58
    일단 적용되는 걸 봐야하니까
    간단한 걸로 해볼게요
  • 0:58 - 1:10
    나중에 더 많은 걸
    만들어 볼게요
  • 1:10 - 1:13
    좋아요
  • 1:13 - 1:18
    마지막 단계는
    이걸 이것과 연결하는 거에요
  • 1:18 - 1:22
    마우스 이벤트가 발생했을 때
    이 함수가 호출되어야 하니까요
  • 1:22 - 1:28
    face.addEventListener("mousemove",
    라고 쓰고
  • 1:28 - 1:32
    함수 이름을 쓰세요
    'onMouseMove'
  • 1:32 - 1:37
    이제 이걸 멈추고 얼굴 위로
    마우스를 움직여봐요
  • 1:37 - 1:40
    문구가 보이세요?
  • 1:40 - 1:44
    이 효과가 적용되는 걸
    여러분도 봤을 거에요
  • 1:44 - 1:47
    하지만 이게 우리가
    원하는 효과는 아니에요
  • 1:47 - 1:50
    우린 문구를 쓰는게 아니라
    그림을 그리고 싶어요
  • 1:50 - 1:53
    웹페이지에 어떻게
    그림을 그릴 수 있을까요?
  • 1:53 - 1:58
    canvas 태그를 사용해서
    픽셀을 그릴 수 있어요
  • 1:58 - 2:01
    여기 ProcessingJS에서
    하는 것 처럼요
  • 2:01 - 2:07
    우리가 그리는 건 수염이지만
    실제로는 수많은 검은 점일 거에요
  • 2:07 - 2:11
    그냥 각 점에
    div를 생성해서
  • 2:11 - 2:14
    절대 위치로 div에게
    위치를 줄 수 있죠
  • 2:14 - 2:18
    여기 수염 하나로
    해볼게요
  • 2:18 - 2:23
    beard 클래스를 가진
    div를 만들고
  • 2:23 - 2:30
    이 수염에게 CSS를 주고요
    여기 넣을게요
  • 2:30 - 2:32
    이건 이렇게 고칠게요
  • 2:32 - 2:36
    이 수염의 배경색은
    검정색이고 5x5 픽셀이에요
  • 2:36 - 2:41
    둥글게 만들려면
    여기 2픽셀의 테두리를 줘요
  • 2:41 - 2:45
    그리고 절대 위치 값을 쓰고 있어요
  • 2:45 - 2:48
    지금은 div가 얼굴 밑에 있네요
  • 2:48 - 2:51
    얼굴 위로 올리려면
    어떻게 해야할까요?
  • 2:51 - 2:54
    절대 위치를 사용한다는 것은
  • 2:54 - 2:58
    'top'과 'left' 속성을 사용해서
  • 2:58 - 3:02
    실제 위치를 표시해줘야해요
    절대 위치니까요
  • 3:02 - 3:08
    여기 'top:80px'와
    'left:15px'를 줄게요
  • 3:08 - 3:09
    좋아요
  • 3:09 - 3:14
    이제 HTML으로는 되니까
    자바스크립트로 해볼게요
  • 3:14 - 3:19
    사용자가 마우스를 움직일 때마다
    이 div가 생길 수 있게요
  • 3:19 - 3:23
    자바스크립트 콜백 함수로
    돌아가 볼게요
  • 3:23 - 3:26
    첫 번째는 div를 만드는 거에요
  • 3:26 - 3:31
    document.createElement()
    함수로 할 수 있어요
  • 3:31 - 3:34
    여긴 div가 되겠죠
  • 3:34 - 3:40
    두 번째로는 클래스를 추가해요
    'beard.className = "beard";'
  • 3:40 - 3:42
    이제 div가 생겼는데 어딘가에 떠 있어요
  • 3:42 - 3:47
    마지막으로는 바디에 넣어주세요
  • 3:47 - 3:52
    이제 HTML에서 한 걸
    자바스크립트로 해봤어요
  • 3:52 - 3:55
    HTML에서는 지울게요
  • 3:55 - 3:59
    이제 윈스턴을 클릭해 보세요
  • 3:59 - 4:03
    어떤 일이 일어나는지 보세요
  • 4:03 - 4:05
    수염이 생기는 거 봤어요?
  • 4:05 - 4:07
    이걸 여러번 하면요?
  • 4:07 - 4:11
    그러면 두 번째 클릭에서는
    아무것도 안 되는게 보일 거에요
  • 4:11 - 4:14
    또는 아무것도
    안 되는 것처럼 보이죠
  • 4:14 - 4:18
    왜냐하면 모든 div가
    top과 left 값이 같아서
  • 4:18 - 4:21
    새 div가 예전 것 위에
    겹쳐지고 있어요
  • 4:21 - 4:25
    우리는 div가 사용자의 마우스가
    있는 곳에 생기길 원해요
  • 4:25 - 4:30
    마우스의 위치를
    어떻게 알 수 있을까요?
  • 4:30 - 4:34
    브라우저는 많은 정보들을
    기록하고 있어요
  • 4:34 - 4:38
    사용자 이벤트가 발생할 때마다
    어디서 일어나는 지 같은 것들요
  • 4:38 - 4:41
    브라우저는 여러분들에게
    매번 그 정보를 제공해요
  • 4:41 - 4:43
    이벤트 리스너 함수가
    호출될 때마다 불러와요
  • 4:43 - 4:47
    그럼 어디서 어떻게 놀라운
    정보를 얻을 수 있을까요?
  • 4:47 - 4:51
    힌트로 한 글자만 보여줄게요
  • 4:51 - 4:56
    이 e는 이벤트 정보 객체에요
  • 4:56 - 5:00
    브라우저는 이 객체를
    첫 번째 인자로 전송해요
  • 5:00 - 5:02
    이벤트 리스너 콜백 함수가
    호출되어질 때마다 말이죠
  • 5:02 - 5:06
    전에는 필요없었으니까
    이 인자를 쓰지 않았어요
  • 5:06 - 5:09
    하지만 이제 사용할 거니까
    객체에 이름을 줄거에요
  • 5:09 - 5:12
    이름은 함수에서 참조하기
    쉽게 해줄거에요
  • 5:12 - 5:16
    자바스크립트에서는 함수에 여러 개의
    인자를 줘도 호출할 수 있어요
  • 5:16 - 5:19
    함수가 그 인자를 사용하지 않고
    참조하지 않아도 말이죠
  • 5:19 - 5:23
    이 정보는 항상 받고있었어요
    우리가 몰랐을 뿐이죠
  • 5:23 - 5:28
    이제 이 e의 로그를 보기 위해
    'console.log(e)'를 쓸게요
  • 5:28 - 5:32
    이제 잠깐 윈스턴을 클릭하고
    콘솔을 관찰해보세요
  • 5:32 - 5:34
    이 이벤트 객체의
    로그가 출력되는게 보일 거에요
  • 5:34 - 5:39
    그리고 이 객체의
    속성을 볼 수 있어요
  • 5:39 - 5:43
    우리가 관심있는 속성은
    두 개가 있어요
  • 5:43 - 5:46
    'clientX'와
    'clientY'에요
  • 5:46 - 5:49
    이벤트의 x와 y 위치가 기록되는데
    이걸 사용하게 될 거에요
  • 5:49 - 5:52
    수염의 위치를
    지정하기 위해서요
  • 5:52 - 6:02
    수염의 top을 e.clientY로 하고
    단위로는 px를 추가하세요
  • 6:02 - 6:11
    left는 e.clientX로 하고
    단위로는 px를 추가하세요
  • 6:11 - 6:14
    이제 잠시 멈추고
    마우스를 올려보세요
  • 6:14 - 6:18
    윈스턴에게 수염을 그려주세요
  • 6:18 - 6:19
    꽤 멋지죠?
  • 6:19 - 6:23
    여러분이 각종 색칠 프로그램을
    상상할 수 있을거에요
  • 6:23 - 6:26
    clientX와 clientY를 이용해서요
  • 6:26 - 6:29
    콘솔에서 본 것 처럼
    여러 속성들이 있어요
  • 6:29 - 6:31
    여러분이 이벤트 객체에서
    사용할 수 있는 것들이요
  • 6:31 - 6:35
    제 생각에 가장 유용한 것은
    키보드와 관련된 거에요
  • 6:35 - 6:38
    여러분은 사용자가 누르고
    있던 키를 알 수 있어요
  • 6:38 - 6:40
    이벤트가 일어날 때 말이죠
  • 6:40 - 6:46
    이걸로 키보드를 사용하는 인터페이스나
    아주 재밌는 게임을 만들 수 있어요
  • 6:46 - 6:47
    한 가지 더 있어요
  • 6:47 - 6:50
    이 인자를 e라고
    부르지 않아도 돼요
  • 6:50 - 6:57
    일반적이지만 어떤 개발자들은
    evt나 evert라고 불러요
  • 6:57 - 6:59
    뭐라고 부르든지 상관없어요
  • 6:59 - 7:04
    그게 브라우저가 여러분의 함수에
    전달하는 첫번째 인자라면요
  • 7:04 - 7:09
    그리고 그 객체를 이런 방식으로
    참조할 것이라면요
  • 7:09 - 7:13
    만약 문제가 생긴다면
    console.log를 사용하도록 해요
  • 7:13 - 7:16
    어떤 일이 일어나는지
    디버깅을 도와줄거에요
  • 7:16 - 7:17
    여러분이 웹 개발자가 되면
  • 7:17 - 7:21
    콘솔은 아마 여러분의
    가장 친한 친구가 될거에요
  • 7:21 - 7:22
    쓰세요!
Title:
이벤트 속성 사용하기(비디오 버전)
Description:

이 강의는 말하면서 보여주는 것의 녹화입니다.
칸 아카데미의 인터랙티브 보여주기를 사용하면 멈추고 코드를 수정하는 것이 가능합니다. 그리고 더 나은 해상도에서 볼 수 있습니다.

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

Korean subtitles

Revisions