我正在编写一个使用鼠标操作的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;
}
}
问题是每次我去点击按钮,布尔值来回快速切换。当我握住它时,它会迅速而且不断地切换。我想这样做,以便我点击一次然后切换一次。
答案 0 :(得分:1)
您设置布尔值beenClicked
但未在任何地方进行检查。我建议尝试
if (!beenClicked && toggleToolTips.clicked())
{
Screen.canDrawTooltip = !Screen.canDrawTooltip);
}
将beenClicked
设置为某处,例如mouseReleased。