많은 RTS 게임과 비슷하게 마우스가 창의 바깥 가장자리에 도달하면보기가 움직이는 게임을 만들고 싶습니다. MouseMotionListener를 사용할 때 상당한 오버 헤드가 있음을 읽었습니다.마우스 이동 최적화
게임 플레이 (JPanel) 내에 게임 플레이에는 영향을주지 않지만 마우스가 MouseAdapter.mouseEntered()/mouseExited()를 통해 내부 구성 요소를 떠날 때 등록되는 두 번째 투명 구성 요소가있을 수 있습니다. ?
boolean mouseOnScreen;
boolean mouseWithinInnerComponent; //is (10 <= mouse.x <= screenWidth - 10) && (10 <= mouse.y <= screenHeight)
if(mouseOnScreen && !mouseWithinInnerComponent)
{
//do something...
}
내가 마우스에있는 경우 감지 할 수있는 화면 주위에 테두리를 형성하기 위해 모서리에 중복 위에서 언급 한 요소 네 가지를하지 않고 교차 된 화면 경계를 확인하는 방법에 대한 손실입니다 가장자리 또는 모서리. 이 나는
boolean mouseOnScreen;
boolean mouseWithinTopComponent; //is (0 <= mouse.y <= 10)
boolean mouseWithinBottomComponent; //is (screenHeight - 10 <= mouse.y <= screenHeight)
boolean mouseWithinLeftComponent; //is (0 <= mouse.x <= 10)
boolean mouseWithinRightComponent; //is (screenWidth - 10 <= mouse.x <= screenWidth)
if(mouseOnScreen)
{
if(!mouseWithinBottomComponent)
{
//move view up
}
if(!mouseWithinTopComponent)
{
//move view down
}
if(!mouseWithinLeftComponent)
{
//move view right
}
if(!mouseWithinRightComponent)
{
//move view left
}
}
가 정확히 얼마나 많은 오버 헤드 된 MouseMotionListener 존재 ... (게임을 실행하는 동안 각 구성 요소를 확인하는 데) 매우 비싼 상상? 탐지 방법이 게임 창의 경계를 따라 이루어질 필요가 있다면이 방법이나 비슷한 방법이 더 효과적일까요?
참고 : 가능한 전체 화면 응용 프로그램뿐만 아니라 창 모드에서도 사용됩니다.
아주 좋은 알고리즘 설명 –