마우스 입력 이벤트



마우스 입력 이벤트는 사용자가 마우스로 조작했을 때 발생하는 이벤트입니다.


엔트리에서는

  1. 마우스를 클릭했을 때
  2. 마우스 클릭을 해제했을 때
  3. 오브젝트를 클릭했을 때
  4. 오브젝트 클릭을 해제했을 때

의 4가지 블록이 있습니다.


1, 2번은 마우스 클릭을 감지하는 블록이고, 3, 4번은 그 중에서도 오브젝트를 클릭하는 것을 감지하는 블록입니다.

정확한 차이는 다음 예를 참고하세요.




이런 상세한 차이점은 설명을 읽는 것 보다는 직접 코드를 만들어서 실행해보면 더 쉽게 알 수 있습니다.





그럼 먼저 '오브젝트' 클릭 이벤트를 먼저 알아보겠습니다.






'오브젝트 클릭 이벤트'는 마우스 포인터가 오브젝트의 모양 위(투명한 부분 제외)에 있을 때 마우스를 클릭하면 실행되는 이벤트입니다.

가장 많이 사용되는 예가 바로 '버튼'입니다.






요런 버튼 많이 봤죠?

버튼을 누르면 게임 장면으로 넘어가서 게임이 시작되기도 하고, 종료된 게임을 다시 할 때도 버튼이 필요 할 것입니다.

화면에서 사용자가 뭘 할지 그냥 정해주는 것이 아니라 사용자가 원하는 것을 골라서 할 수 있게 만들어주는 거죠.


위의 코드를 가지고 있는 오브젝트를 클릭하면 '오브젝트를 클릭했을 때' 블록이 동작하기 시작하고, 그 아래 연결 된 블록이 실행되어 '다음' 장면으로 넘어가게 됩니다.






글상자 오브젝트를 그대로 버튼으로 사용하기도 하는데 이때는 주의 할 점이 있습니다.

바로 투명한 영역은 클릭 이벤트가 발생하지 않는다는 점이죠.

글상자 오브젝트 뿐 아니라 다른 오브젝트도 투명한 영역은 클릭이 되지 않는 점 참고하세요.






오브젝트 클릭 이벤트는 버튼 기능 말고도, 오브젝트 자체를 변화시키기 위한 용도로도 많이 사용됩니다.

위의 예제는 사용자가 풍선 오브젝트를 클릭하면 풍선이 모양을 바꾸다가 결국 터져버리게 된다는 것인데, 이 때 사용자가 풍선을 클릭하는 이벤트를 감지하고, 이벤트가 발생할 때 마다 풍선의 모양을 바꿔주는 프로그램입니다.


위의 예시들은 가장 흔하게 오브젝트 클릭 이벤트를 활용하는 방법이고, 이 외에도 오브젝트 클릭 이벤트를 활용하는 방법은 다양하게 있답니다.








마우스 클릭 이벤트는 엔트리 실행화면 안의 아무 곳이나 클릭하면 발생하는 이벤트 입니다.

따라서 하나의 장면에서 한가지 기능을 수행하는 역할로 사용하게 되는 경우가 많습니다.

오브젝트를 클릭 했을 때 만약 '마우스를 클릭했을 때' 블록이 있다면, 이 블록도 함께 실행됩니다. 의도해서 코딩한 게 아니라면 이런 경우 내가 원하는 대로 동작하지 않게 될 가능성이 높습니다.





위의 예제는 화면 아무 곳이나 클릭 했을 때 왼쪽은 투구가 야구공을 던지는 모션을 하는 프로그램이고, 오른쪽은 화면의 아무 곳이나 클릭 했을 때 타자가 방망이를 휘두르는 모션을 하는 프로그램입니다.


애니메이션을 설명하기 위한 예제로 만들었기 때문에 이렇게 각각 별도로 만들었고, 마우스를 클릭했을 때 동작을 시작하도록 했습니다.


그런데 만약 두 오브젝트가 같은 화면안에 있다면?

마우스를 클릭하면 투수가 공을 던지는 동작과 타자가 방망이를 휘두르는 동작이 동시에 실행 될 것입니다.

공이 날아가기도 전에 방망이를 휘둘러 버리게 되죠.

이건 내가 원하는게 아니겠죠?


이렇게 상황에 따라 맞는 방법을 생각해서 그 상황에 맞도록 프로그래밍 해 주어야 한답니다.


'오브젝트 클릭 이벤트'와 '마우스 클릭 이벤트'에 대해 좀 알게 되었나요?


다음 강좌에서는 키보드 입력 이벤트를 설명하겠습니다.





잠깐! 

질문. 마우스, 오브젝트 클릭 이벤트 블록은 왜 '클릭 했을 때'와 '클릭을 해제 했을 때' 블록으로 나눠져 있나요? 어떤 블록을 사용해야 하나요?


답변

사용자가 마우스를 한번 클릭 했을 때, 그 클릭하는 동작을 좀 더 자세히 나누어서 감지할 수 있게 해주기 위해 블록을 따로 만들었습니다.




앞에서 설명한 예제들에서는 '클릭 이벤트'나 '클릭 해제 이벤트' 둘 중 아무거나 감지해서 사용해도 거의 차의가 없을 거에요.


이 두 블록이 힘을 발휘하는 것은 마우스의 클릭 이벤트를 좀 더 세밀하게 이용하는 기능을 만들때 입니다.

예를 들면 "드래그 앤 드롭" 기능 같은 것이죠.

엔트리 작품 만들기에서 오브젝트를 추가하고 원하는 위치에 가져다 놓을 때, 마우스로 오브젝트를 클릭한 다음 옮기고 손을 떼면 옮긴 위치에 고정되죠?




이런 기능을 만들 때는 '오브젝트를 클릭했을 때' 이벤트와 '오브젝트 클릭을 해제했을 때'를 각각 다른 기능을 수행하기 위해 사용하기 때문에 두 블럭 모두 필요하답니다.


드래그 앤 드롭 기능은 조금 복잡할 것 같은데, 한 번 도전해 보세요! 성공하면 실력이 한단계 업그레이드 될 거에요.







이전 강의
이벤트란?

댓글

로그인 후 댓글을 남길 수 있습니다.