2012-12-18 63 views
-2

我正在编写一个使用鼠标操作的Java游戏。我的主要课程中有一个点msc - 每当我按下鼠标时它都会更改,并且每当我释放鼠标时它都会设置为(0, 0)。对于按钮,他们检查msc是否在它们的矩形内,如果是,请致电clickJava鼠标输入每秒

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

下面是按钮单击方法的代码:

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

好吧,老实说,请给我一些方向,而不是只是downvoting me.It帮助没有人。 – user1871085

+0

看起来你需要计时器。告诉我们一些代码,并告诉我们你在哪里得到确切的问题。 – Smit

+0

k我添加了代码和东西。有什么建议么? – user1871085

回答

1

您可以设置布尔型beenClicked,但不会在任何地方检查它。我会建议尝试

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

和设置beenClicked回虚假的地方,如的mouseReleased。

+0

是的,在其他地方有更多的代码做这两件事情,但事实是,每当屏幕重新绘制自己的鼠标动作发送到Screen.mse,设置该点的x和y。因此该按钮每秒获得多个输入,这些输入是打开和关闭布尔值。那就是问题所在。我想我现在可能正在努力解决问题,但是我们非常感谢他们提供进一步的帮助。 – user1871085

+0

它工作。我没有看到这个很难,然后我读它,并认为:你是一个白痴的家伙......我不相信我没有想到这一点!谢谢! – user1871085