0

これは私の最初の投稿なので、他の情報が必要な場合はお知らせください。私は Java GUI でゲームを作成していますが、うまくいけば簡単な質問が 2 つあります。現在、次のコードを使用して、マップを画面にペイントし、マップをパンすることができます。

    @Override
    public void mouseDragged(MouseEvent e) {

    }

    @Override
    public void mouseMoved(MouseEvent e) {

        if(e.getX() > swidth-30){
            if(xmod+(columns*30) > swidth){
                xmod-=30;
                repaint();
            }
        }
        else if(e.getX() < 30){
            if(xmod < 0){
                xmod+=30;
                repaint();
            }
        }
        else if(e.getY() > sheight-30){
            if(ymod+(rows*30) > sheight){
                ymod-=30;
                repaint();
            }
        }
        else if(e.getY() < 30){
            if(ymod < 0){
                ymod+=30;
                repaint();
            }
        }
        else{

        }

    }

}

唯一の問題は、継続的にパンするには、マウスを画面の端で継続的に動かさなければならないことです。私の質問は、マウスを画面の端に置いて、グラフィックを更新しながら継続的にパンする方法があるかどうかです。2 つ目の質問は、これをキャラクターの移動にも適用できるかどうかです。スレッドが可能な解決策になると思いましたが、それらの使用に慣れていません。ありがとうございました!

4

1 に答える 1

3

これを達成するには2つの方法が考えられます。

あなたは出来る...

必要に応じて x/y 位置を更新するa を開始しjavax.swing.Timer、マウスが画面の端から一定の距離内に入ったときに画面を再描画します。マウスが元に戻ったので、明らかにタイマーを停止します;)

あなたは出来る...

バックグラウンドThreadを使用してマウスの位置を監視し、「トリガー」ゾーンに入ると、x/y 値を更新して再描画をトリガーし、EDT への呼び出しを再同期するようにします;)

于 2013-02-01T20:44:10.700 に答える