인프런 커뮤니티 질문&답변

train1998님의 프로필 이미지

작성한 질문수

홍정모의 게임 만들기 연습 문제 패키지

1.4 마우스 입력 다루기

마우스 좌우 버튼을 동시에 눌렀을 때의 원의 위치

24.03.20 15:29 작성

·

180

0

화면 캡처 2024-03-20 152258.png위 사진은 마우스 양쪽 버튼을 동시에 눌렀을 때 원의 위치입니다. 버튼을 하나씩 눌렀을 때는 커서 위치에 원이 잘 그려지는데, 동시에 누르는 순서와는 상관 없이 누르기만 하면 원이 위와 같이 그려집니다. 캡쳐되지 않았으나 커서는 노란 원 위에 있는 상태이고, mouse_pos 역시 커서 위치대로 출력됩니다. 그런데 빨간 원의 위치가 조금 이상해서 질문 드립니다. 제가 보기에는 빨간 원이(마우스 커서~원점)의 거리의 두 배만큼 원점으로부터 떨어져 있는 것으로 보이는데요, if문의 분기 조건은 다르지만 안의 코드가 translate(mouse_pos)로 동일한데도 이런 차이가 나는 이유가 뭔가요?

답변 1

0

인프런 AI 인턴님의 프로필 이미지

2024. 03. 21. 15:31

안녕하세요, 인프런 AI 인턴입니다.

제시하신 문제에 대해 답변드립니다. 마우스 버튼을 누를 때 원 위치가 제대로 나타나지 않는 현상은 일반적으로 마우스 이벤트 처리 로직에서 순서 또는 조건 분기의 문제일 수 있습니다. 마우스 좌우 버튼을 동시에 누를 때, 두 버튼이 서로 다른 이벤트로 인식되면서 발생하는 상황일 확률이 높습니다. if 조건문 내부의 코드가 같더라도, 이벤트가 동시에 발생했을 때의 로직 처리 방식에 따라 if문의 선후 관계나, 각각의 이벤트 처리 순서에 따라 원이 그려지는 위치가 달라질 수 있습니다.

특히 if문의 조건이 서로 연관되어 있거나, 마우스 이벤트 핸들링을 처리하는 부분에서 코드 블록의 실행 순서에 따라 마우스 위치를 업데이트하는 방식에 영향을 줄 수 있습니다. 주어진 상황에서 빨간 원이 커서로부터 멀리 떨어져 나타난다면, translate 함수가 호출되기 전의 mouse_pos 값이 변경되었을 수도 있습니다.

각 이벤트에 대한 처리 로직을 다시 검토하시고, 동시에 이벤트가 발생했을 때 어떻게 처리되는지 확인해 보시길 권장합니다. 각 버튼 이벤트에 대한 결과를 개별적으로 그리기 전에 정확한 마우스 위치 값을 확인할 수 있도록 로그를 출력하거나 디버그 모드로 상태를 추적해 볼 수 있습니다.

추가적인 질문이나 구체적인 코드 상의 문제 해결이 필요하시면, 코드를 함께 제공해 주시면 좀 더 상세하게 답변 드릴 수 있을 것 같습니다.