在GUI地图Java上平移

时间:2013-02-01 20:38:36

标签: java swing animation awt jscrollpane

这是我的第一篇文章,所以如果需要任何其他信息,请告诉我。 我正在用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{

        }

    }

}

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

1 个答案:

答案 0 :(得分:3)

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

你可以......

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

你可以......

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