2012-12-12 5 views
3

Madness Interactive를 플레이 한 사용자 중 가장 실망스러운 것은 커서가 게임 영역을 벗어나 실수로 클릭하는 것입니다. 이로 인해 게임의 초점이 흐트러지고 캐릭터가 몇 초 만에 사망합니다. 이 문제를 해결하기 위해 ESC 같은 키를 누르기 전까지는 화면에서 커서를 유지할 백그라운드에서 실행할 수있는 Java 응용 프로그램을 만들고 싶습니다.자바 : 영역에서 커서 누르기

두 가지 구현 방법이 있지만 둘 중 하나가 실행 가능한지 여부는 알 수 없습니다.

  1. Madness Interactive의 렌더링 영역 크기와 일치하는 AWT 프레임을 만들고이를 사용하여 커서를 제어하십시오.
  2. 일부 컨텍스트 외부 운영 체제 호출을 사용하여 커서를 지정된 영역에 유지하십시오.

이점 이점 # 1 : 프레임의 크기 조정을 훨씬 쉽게 구현하여 사용자가 둘러싸인 영역의 모양과 위치를 볼 수 있습니다.

접근법 # 1과 관련된 잠재적 인 문제점 : AWT 프레임은 게임이 실행중인 브라우저 창에서 포커스를 훔쳐 전체 솔루션을 무의미하게 만들 필요가 있습니다.

내 질문에, 이러한 접근법 중 하나가 실행 가능합니까? 그렇지 않다면 가능한 옵션이 있습니까?

편집 : 필요한 경우 다른 프로그래밍 언어를 사용하고자합니다.

EDIT2 : 브라우저 플러그인을 개발할 수도 있지만 이전에는 그런 개발 방법을 사용하지 않았습니다. 나는 그것을 연구 할 것이다.

+0

OS에 구애받지 않아야합니까? 전체 화면을 실행하고 일부 정의 된 영역 내에서 커서 이벤트를 다른 창으로 전달하는 OS 별 응용 프로그램을 작성한다고 상상할 수도 있지만 이것이 awt를 통해 수행 될 수 있을지는 의문입니다. –

+0

Windows를 실행 중이므로 아니오입니다. 그것은 Windows 전용 일 수 있습니다 ... 브라우저 플러그인은 어떻습니까? – Miles

+0

오, 브라우저 기반 게임입니까? 그래, 나는 그것을 처리하기 위해 greasemonkey 스크립트를 작성하는 것이 좋습니다. 나는 아래의 답에 나의 생각을 쓸 것이다. –

답변

1

브라우저 기반 게임의 경우 브라우저의 확장 기능을 수행하는 greasemonkey 스크립트를 작성하여 게임 사이트에서만 실행되도록 필터링 할 수 있습니다.

    : 시스템이 다음을 수행하는 스크립트를 구체화 할 수 있습니다

    $(document).on('click', function(event) { 
        if (event.pageX > 300 || event.pageY > 400) { 
        return false; 
        } 
    }); 
    

    : 간단한 경우

    는 다음 페이지로 다음 이벤트 처리기를 추가 할 수 있습니다, 클릭 가능한 영역은 (0,0) - (300,400) 있다고 가정

  1. 브라우저의 크기를 조절하여 클릭의 절대 x, y 좌표를 확인하는 대신
  2. 브라우저를 수신하기를 원하지 않는 페이지 요소 내에 있는지 확인하십시오
  3. 게임에 도움을 .. 당신을 음 사용자 정의 키 바인딩을 추가 클릭
  4. 당신이 자바에서 작업에 여전히 관심이 있다면 게임 자체
+0

많은 감사합니다! 나는 파트 3과 4를 가장 좋아한다. :) – Miles

2

을 재생할 수있는 자바 스크립트 로봇 쓰기, 여기 가능 솔루션을 제공합니다.

먼저 영역 내의 커서를 제한하기 위해 Java Robot 클래스를 사용할 수 있습니다.

mouseMove(int x, int y); 

그런 다음 AWT의 MouseInfo를 사용하여 마우스 커서의 위치를 ​​얻을 수 있습니다.

PointerInfo mouseInfo = MouseInfo.getPointerInfo(); 
Point point = mouseInfo.getLocation(); 
int x = (int) point.getX(); 
int y = (int) point.getY(); 

그런 다음, 마우스 커서의 xy 값이 특정 지점을 넘어 때마다, 자바 로봇 클래스를 사용하여 다시 이동합니다.

+0

오! 나는 Robot이 부모 AWT Component를 필요로한다고 생각했지만, 문서의 추가 검사를 받으면 오인 된 것 같습니다! 이것은 유효한 대답이기도합니다 (나는 투표 할 것이지만 누군가 다른 사람이 먼저 대답했습니다 ...) 게다가, 어떻게 "custom keybindings"를 추가하려는 유혹에 저항 할 수 있습니까? – Miles

관련 문제