Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Raidenkk

Treue Seele

  • »Raidenkk« ist der Autor dieses Themas

Beiträge: 151

Wohnort: Bergkamen/Oberaden

Beruf: Multimedia Informatik

  • Private Nachricht senden

1

15.09.2011, 07:34

Tastenbelegung (Hit&Down)

Hey,
ich nutze SFML und ich benötige für mein Hauptmenü eine Art (KeyHit&KeyDown) damit mein Menüpunkt immer nur +1 oder -1 pro Knopfdruck bewegt.
Leider konnte ich nicht wirklich was brauchbares finden da ich Input nutze.
Hat jemand vielleicht eine ide?

Beispiel:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// Tastenbelegung
    const sf::Input &Input = App.GetInput ();
    bool UpKeyDown = Input.IsKeyDown (sf::Key::Up);
    bool DownKeyDown = Input.IsKeyDown (sf::Key::Down);

    switch (Modus)
    {
        // Hauptmenü
        case 1:
        {
            // Hoch&Runter switch
            if (UpKeyDown == true)
            {
                Auswahl--;
            }
            if (DownKeyDown == true)
            {
                Auswahl++;
            }

2

15.09.2011, 09:16

Schau dir mal sf:Event an da gibt es zwei Eventtypen KeyPressed und KeyReleased die Sollten dir eigentlich weiterhelfen.

Gruß Koschi
Wer aufhört besser werden zu wollen hört auf gut zu sein!

aktuelles Projekt:Rickety Racquet

Raidenkk

Treue Seele

  • »Raidenkk« ist der Autor dieses Themas

Beiträge: 151

Wohnort: Bergkamen/Oberaden

Beruf: Multimedia Informatik

  • Private Nachricht senden

3

15.09.2011, 09:17

ja aber da steht das die nicht für Realtime eingaben gut sind

4

15.09.2011, 09:23

ja aber da steht das die nicht für Realtime eingaben gut sind

Wo steht das ?

Ich bin auf Arbeit und kann nicht in meinem Projekt spicken wie ich es da habe haber ich meine ich habe tastatur eingabe auch über Event bin mir aber net 100% sicher.
Wer aufhört besser werden zu wollen hört auf gut zu sein!

aktuelles Projekt:Rickety Racquet

Raidenkk

Treue Seele

  • »Raidenkk« ist der Autor dieses Themas

Beiträge: 151

Wohnort: Bergkamen/Oberaden

Beruf: Multimedia Informatik

  • Private Nachricht senden

5

15.09.2011, 09:24

This event system is good enough for reacting to events like window closing, or a single key press. But if you want to handle, for example, the continous motion of a character when you press an arrow key, then you will soon see that there is a problem : there will be a delay between each movement, the delay defined by the operating system when you keep on pressing a key.

6

15.09.2011, 09:27

Um dein menü zu steuern wirds alle mal reichen. Da kommt es ja nicht auf Reaktion an und schnell genug dafür ist es au jeden fall. Probier es einfach aus !
Wer aufhört besser werden zu wollen hört auf gut zu sein!

aktuelles Projekt:Rickety Racquet

TGGC

1x Rätselkönig

Beiträge: 1 799

Beruf: Software Entwickler

  • Private Nachricht senden

7

15.09.2011, 09:45

Man kann auch einfach nur schauen, ob sich der Zustand von der letzten Abfrage zur aktuellen von nicht gedrueckt auf gedrueckt geaendert hat.

Raidenkk

Treue Seele

  • »Raidenkk« ist der Autor dieses Themas

Beiträge: 151

Wohnort: Bergkamen/Oberaden

Beruf: Multimedia Informatik

  • Private Nachricht senden

8

15.09.2011, 11:23

Ich habe es mal mit Event versucht aber jetzt will sich garnix mehr bewegen.

Habe ich was falsch gemacht?

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
void Gui (sf::RenderWindow &App, int &Modus, sf::Font &Font_Impact, int &Auswahl)
{
    switch (Modus)
    {
        // Hauptmenü
        case 1:
        {
            sf::Event Steuerung;
            while (App.GetEvent (Steuerung))
            {
                // Hoch&Runter switch
                if ((Steuerung.Type == sf::Key::Up) && (Steuerung.Type == sf::Event::KeyPressed))
                {
                    Auswahl--;
                }
                if ((Steuerung.Type == sf::Key::Down) && (Steuerung.Type == sf::Event::KeyPressed))
                {
                    Auswahl++;
                }
            }

Architekt

Community-Fossil

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

9

15.09.2011, 11:32

C-/C++-Quelltext

1
if ((Steuerung.Type == sf::Key::Up) && (Steuerung.Type == sf::Event::KeyPressed))

Der Type soll also gleichzeitig sf::Key::Up und KeyPressed sein? Das ist logisch :P

Probier es mal mit

C-/C++-Quelltext

1
if ((Steuerung.Type == sf::Event::KeyPressed) && (Steuerung.Key.Code == sf::Key::Up)


Nächstes mal gründlicher das Tutorial dazu durchlesen (;
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

Raidenkk

Treue Seele

  • »Raidenkk« ist der Autor dieses Themas

Beiträge: 151

Wohnort: Bergkamen/Oberaden

Beruf: Multimedia Informatik

  • Private Nachricht senden

10

15.09.2011, 12:58

oh sry das habe ich total übersehen, aber trotzdem genau wie ich gesagt habe ist Event zu langsam. Es erkennt kaum meine Tastendrucks.

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
sf::Event Steuerung;

    while (App.GetEvent (Steuerung))
    {
        if ((Steuerung.Type == sf::Event::KeyPressed) && (Steuerung.Key.Code == sf::Key::Down))
        {
            Auswahl ++;
        }
    }


Erst wenn ich 3 Sekunden lang die taste gedrückt halte passiert mal was.

Werbeanzeige