这是我的第一篇文章,所以如果需要任何其他信息,请告诉我。 我正在用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{
}
}
}
唯一的问题是鼠标必须不断在屏幕边缘移动才能持续平移。我的问题是,是否有办法将鼠标放在屏幕边缘并在更新图形时不断平移?我的第二个问题是,如果这可以应用于角色移动吗?我想也许一个线程可能是一个解决方案,但我不熟悉使用它们。谢谢!
答案 0 :(得分:3)
我可以想到两种方法来实现这一目标。
你可以......
启动javax.swing.Timer
,根据需要更新x / y位置,并在鼠标在屏幕边缘的给定距离内输入时重新绘制屏幕。当鼠标移出时,你会显然停止计时器;)
你可以......
使用背景Thread
来监控鼠标位置,当它进入“触发”区域时,会更新x / y值并触发重新绘制,确保将呼叫重新同步到EDT; )