1

2 人用のゲーム アプレットを作成しています。両方のプレーヤーは、ボールが壁に衝突しないようにディスクをコントロールする必要があります。1 人のプレーヤーは、マウスの動きでディスクを操作し、その他の操作はキーボードの上下で操作します。問題は、MouseMotionListener が原因でキーボードのキーがフォーカスされないため、2 番目のプレーヤーが自分のディスクを制御できないことです。この問題を解決する方法がわかりません。コードは次のとおりです。

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);が、今ではゲームがちらつきます。ゲームで何が起こっているのかわかりません。よろしく

4

2 に答える 2

1

キーボードとマウスのアクションには異なるリスナーを使用します。

于 2012-11-23T16:22:38.697 に答える