2012-12-18 65 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