-2

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

其中一个按钮应该切换布尔值;但是,当我单击它时,它会非常快速地切换真假,因为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;
    }
}   

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

4

1 回答 1

1

您设置了布尔值beenClicked,但没有在任何地方检查它。我建议尝试

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

beenClicked并在某个地方(例如 mouseReleased)设置回 false。

于 2012-12-18T05:31:43.157 回答