每秒Java鼠标输入

时间:2012-12-18 01:17:14

标签: java button mouseevent

我正在编写一个使用鼠标操作的Java游戏。我的主要课程中有一个点msc - 只要我按下鼠标就会改变它,每当我释放鼠标时它都会被设置为(0, 0)。对于按钮,他们检查msc是否在其矩形内,如果是,请调用click

其中一个按钮应该切换一个布尔值;当我点击它时,它会非常快地切换为true和false,因为msc每次调用paintComponent时都会更新。

以下是按钮点击方法的代码:

if (button.contains(Screen.msc)) {
    beenClicked = true;
    this.width = this.width - 2;
    this.height = this.height - 2;
    this.x = this.x + 1;
    this.y = this.y + 1;
    g.setColor(currColor);
    textColor = Color.YELLOW;
}

但这不是我认为的问题所在。以下是更改msc的代码:

public void mouseReleased(MouseEvent e) {
    Screen.msc = new Point(0, 0);
}

public void mousePressed(MouseEvent e) {
    Screen.msc = new Point((e.getX()) - ((Frame.size.width - Screen.myWidth) / 2), e.getY() - ((Frame.size.height - (Screen.myHeight)) - (Frame.size.width - Screen.myWidth) / 2));
}

以及单击特定切换按钮时发生的代码:

if (toggleToolTips.clicked()) {
    if (Screen.canDrawTooltip) {
        Screen.canDrawTooltip = false;
    } else if(!Screen.canDrawTooltip){
        Screen.canDrawTooltip = true;
    }
}   

问题是每次我去点击按钮,布尔值来回快速切换。当我握住它时,它会迅速而且不断地切换。我想这样做,以便我点击一次然后切换一次。

1 个答案:

答案 0 :(得分:1)

您设置布尔值beenClicked但未在任何地方进行检查。我建议尝试

if (!beenClicked && toggleToolTips.clicked()) 
{   
    Screen.canDrawTooltip = !Screen.canDrawTooltip);
}

beenClicked设置为某处,例如mouseReleased。