2012-11-23 12 views
1

두 명이 게임 애플릿을 만들고 있습니다. 두 선수는 공이 벽과 충돌하지 않도록 디스크를 제어해야합니다. 한 명의 플레이어가 키보드 동작을 통해 마우스 동작 및 기타 컨트롤로 디스크를 제어합니다. 문제는 두 번째 플레이어가 MouseMotionListener 때문에 키보드 키에 포커스가 남아 있지 않기 때문에 디스크를 제어 할 수 없다는 것입니다. 이 문제를 해결하는 방법을 모르겠습니다. 여기에 코드입니다 :MouseListener가 활성화되어있을 때 키보드 손실이 집중됩니다.

public void init() 
{ 
handle = new HandlerClass(); 

addMouseMotionListener(handle); 
addKeyListener(handle); 
} 

private class HandlerClass implements MouseMotionListener,KeyListener 
{  
public void mouseMoved(MouseEvent event) 
{ 
    MouseY=event.getY(); 

    if(MouseY<=0) 
     MouseY=0; 
    else 
     if(MouseY>=getHeight()-radius*2-1) 
      MouseY=getHeight()-radius*2-1; 

} 
public void keyPressed(KeyEvent event) 
{ 
    switch(event.getKeyCode()) 
    { 
    case KeyEvent.VK_UP: 

     if(keyboardY<=0) 
     { 
      keyboardY=0; 
     } 

     keyboardY=keyboardY+1; 
     break; 

    case KeyEvent.VK_DOWN: 

     System.out.println("down key pressed"); 
     if(keyboardY>=getHeight()-radius*2-1) 
     { 
      keyboardY=getHeight()-radius*2-1; 
     } 
     keyboardY-=1; 
     break; 
    } 
} 

편집 : 내가 setFocusable(true);을 추가하여 키보드에 대한 포커스를 잃는 문제를 해결하지만 지금은 게임이 지옥으로 깜박입니다. 나는 게임에서 무슨 일이 일어나고 있는지 알 수 없다. 감사합니다.

답변

1

KeyListener 이상의 Key Bindings을 사용하면 다른 초점 컨텍스트를 지정할 수 있습니다.

두 번째 질문에 대해서는 최상위 컨테이너에 직접 페인팅하는 것처럼 들립니다. 나는 예제 코드와 함께 별도의 질문을 게시 할 것이다.

1

키보드 및 마우스 동작에 대해 다른 수신기를 사용하십시오.

관련 문제