4 Stimmen

Erhöhen der Zahl einmal pro Mausklick/Tastendruck in XNA

Das hat mich in letzter Zeit gestört - wenn ich einen Code wie unten verwende, um die Auswahl bei jedem Mausklick zu erhöhen: if (m.LeftButton == ButtonState.Pressed) currentSelection++; Dann currentSelection erhöht sich um eine Tonne, einfach weil dieser Code in meinem Update() Funktion ist und durch Design, läuft jedes Bild und so erhöht currentSelection. Es gibt fast keine Chance, die Sie klicken und loslassen können schnell genug, um zu verhindern, dass currentSelection von mehr als eine Erhöhung.

Nun ist meine Frage, was ich tun sollte, um es so jedes Mal, wenn ich die Maus einmal nach unten klicken, es erhöht nur currentSelection einmal, bis das nächste Mal, wenn ich wieder nach unten klicken.

6voto

mauris Punkte 41384

Sie müssen den aktuellen Mausstatus mit dem Mausstatus der letzten Aktualisierung vergleichen.

In Ihrer Klasse werden Sie folgende Aufgaben haben MouseState mouseStateCurrent, mouseStatePrevious; erklärt, und so wird es in etwa lauten:

mouseStateCurrent = Mouse.GetState();

if (mouseStateCurrent.LeftButton == ButtonState.Pressed &&
    mouseStatePrevious.LeftButton == ButtonState.Released)
{
    currentSelection++;
}

mouseStatePrevious = mouseStateCurrent;

Es wird also erkannt, dass Sie die Taste zuvor gedrückt haben und sie dann loslassen - erst dann wird sie als Klick gewertet und zu currentSelection .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X