0

这是我的第一篇文章,如果需要任何其他信息,请告诉我。我正在用 Java GUI 制作游戏,但有两个希望快速的问题。我目前可以使用以下代码在屏幕上绘制地图并在地图周围平移:私有类 MoveMap 实现 MouseMotionListener{

    @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{

        }

    }

}

唯一的问题是鼠标必须在屏幕边缘不断移动才能不断平移。我的问题是是否有办法让鼠标位于屏幕边缘并在更新图形时不断平移?我的第二个问题是这是否也适用于移动的角色?我想也许一个线程是一个可能的解决方案,但不熟悉使用它们。谢谢!

4

1 回答 1

3

我可以想到两种方法来实现这一点。

你可以...

启动javax.swing.Timer将根据需要更新 x/y 位置并在鼠标进入屏幕边缘的给定距离时重新绘制屏幕。当鼠标移出时,您显然会停止计时器;)

你可以...

使用背景Thread监控鼠标位置,当它进入“触发”区域时,将更新 x/y 值并触发重绘,确保重新同步对 EDT 的调用;)

于 2013-02-01T20:44:10.700 回答