-2

マウス アクションを使用する Java ゲームをコーディングしています。メインクラスにポイントmscがあります-マウスを押すたびに変更され(0, 0)、マウスを離すたびに設定されます。ボタンについては、mscが長方形内にあるかどうかをチェックし、そうであれば を呼び出しますclick

ボタンの 1 つは、ブール値を切り替えることになっています。ただし、クリックすると、呼び出される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回クリックすると1回切り替わるようにしたいと思います。

4

1 に答える 1

1

ブール値を設定してbeenClickedいますが、どこにもチェックしていません。試してみることをお勧めします

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

そしてbeenClicked、mouseReleased などのどこかで false に戻します。

于 2012-12-18T05:31:43.157 に答える