adsense



[JAVA] 2D 슈팅게임 개발강좌- 위치즈 플라이트 수정판

[JAVA] 2D 슈팅게임 개발강좌- 위치즈 플라이트 5부 (끝)

GameShop_20140507.zip

과거, 샵 부분을 마우스로 클릭해서 구현하려다 포커스 문제로 취소했던 적이 있습니다만,
RedPumpkin님의 조언으로 이상 없이 구현가능하게 되어서 관련된 부분을 구현하고, 그와 별개로 오류 한 가지를 함께 수정하겠습니다.


1. 샵 부분을 마우스로 클릭해 총알 파워 업 하기

우선 수정할 파일은 GameCanvas.java입니다.


①번 부분을 통해, 캔버스에 포커스가 오는 것을 막아줄 수 있습니다. 타이틀, 게임, 결과화면 모든 씬에 공통적으로 포커스를 차단할 것이므로 GameCanvas.java에서 삽입해 줍니다.

②번 부분은 반대로 캔버스에 마우스 리스너를 부여해 마우스 이벤트가 캔버스(씬) 단위로 발생하도록 해 줍니다.
이것을 선언해주면 이후 마우스 입력이 발생하면 GameCanvas의 마우스 이벤트가 호출됩니다.

각 씬을 끝낼 때는 씬에 할당된 마우스 리스너를 제거해주는 것이 안전합니다.
아래 ③에 해당하는 부분인데 기존 소스에서 이미 들어가있던 부분입니다.


마우스 이벤트의 처리는 TitleScene.java의 public void mouseClicked(MouseEvent e) 부분입니다.
기존에 구현했다 주석으로 묶어놨었기 때문에 주석만 풀어주면 됩니다.



이제 마우스 입력이 발생하면 해당 함수가 호출되고, 파워 업 위치를 클릭했다면 파워 업 프로세스가 진행됩니다.



2. 팝업창 처리의 타이머 오류

골드 부족이나 파워업 최대 상태를 알리기 위한 팝업창이 나타났다 사라지게 하는데 타이머를 사용했는데,
팝업창이 사라지는 부분에서 팝업창에 걸린 타이머를 캔슬했기 때문에 이 타이머는 그대로 재사용이 안됩니다.

그때문에 팝업창이 닫힐 때 타이머를 null 처리하고, 팝업창이 다시 나타날 때 새로 타이머를 생성해줘야 정상적으로 동작합니다.

이 부분의 수정은 아래와 같습니다.




포커스 관련해서 도움말씀 주신 RedPumpkin님께 다시 한 번 감사드립니다.




덧글

댓글 입력 영역


Books

Geek라이프

메가 드라이브 퍼펙트 카탈로그
마에다 히로유키 저/조기현 역

미소녀 일러스트 테크닉
B-은하, pen스케, 카와이 저/정유진 역

핵심강좌! Cocos2d-x
이재환 저

피규어의 교과서 레진 키트 & 도색 입문 편
후지타 시게토시 저/김정규 역
예스24 | 애드온2
일본서적 전문사이트 NEPIC