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

hanhau

Treue Seele

  • »hanhau« ist der Autor dieses Themas

Beiträge: 80

Wohnort: St. Pölten, Österreich

Beruf: schueler

  • Private Nachricht senden

1

27.02.2015, 21:20

[SFML][C++] Texteingabe in Funktion

Abend,

ich würde gerne in einer Funktion einen Text
in einen String einlesen, allerdings stehe ich mit
meinen Code an :hmm:

Die Funktion soll bei einen Textfeld
die Eingabe übernehmen, sollte ich eventuell
nicht von der Funktion einlesen, sondern
vom "Haupteventloop" ?

Mein Hauptproblem:
Es wird nichts ausgegeben :(

HW_Ptr .... Zeiger auf mein Fenster
Input_String ..... String der gelesen werden soll

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void ui::Field::getStringfromKeyboard()
{
    Input_String = "";
    sf::Event event_temp;

    while(HW_Ptr->pollEvent(event_temp))
    {
        if(sf::Keyboard::isKeyPressed(sf::Keyboard::Return)) break;
        if (event_temp.type == sf::Event::TextEntered)
        {
            if (event_temp.text.unicode < 128)
                std::cout << "ASCII character typed: " << static_cast<char>(event_temp.text.unicode) << std::endl;
        }
    }
    Input_Text.setString(Input_String);
}
Oft denke ich an sie, niemals habe ich sie gefragt, niemals etwas gesagt,
nur verzweifelt am PC gesessen und dabei die Zeit vergessen, sie ist weg.

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »hanhau« (27.02.2015, 21:26)


eXpl0it3r

Treue Seele

Beiträge: 386

Wohnort: Schweiz

Beruf: Professional Software Engineer

  • Private Nachricht senden

2

27.02.2015, 22:11

pollEvent läuft so schnell wie nur möglich und da du unmöglich im microsekunden Bereich schreiben kannst, wird pollEvent nach ein paar Events false zurückgeben und die Schleife bricht ab, bevor du überhaupt etwas eingegeben hast.

Auch darfst du nicht vergessen, dass während der Zeit in der du in dieser Funktion bist, sonst nichts mehr geschehen wird. Wenn du also normalerweise etwas zeichnest wird in der zwischen Zeit alles eingefroren sein.
Wenn es sich bei deiner Applikation also um eine real-time Applikation handelt, dann solltest du mit "States" arbeiten. Du wechselst also in den Keyboard Input Mode und während dieser Zeit wird keine andere Logik mehr ausgeführt sondern nur die Eingabe aufgefangen und wenn du sonst etwas renderst, wird da noch weiter gerendert, aber keine der Objekte mehr bewegt.
Blog: https://dev.my-gate.net/
—————————————————————————
SFML: https://www.sfml-dev.org/
Thor: http://www.bromeon.ch/libraries/thor/
SFGUI: https://github.com/TankOs/SFGUI/

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

3

27.02.2015, 22:16

Keine Objekte mehr bewegt? Ich weiß ja nicht, ob das unbedingt sinnvoll ist ;) Er soll sich endlich mal anschauen was ein Gameloop ist und wie man Events verarbeitet ohne dabei alles andere der Anwendung komplett zu blockieren.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

hanhau

Treue Seele

  • »hanhau« ist der Autor dieses Themas

Beiträge: 80

Wohnort: St. Pölten, Österreich

Beruf: schueler

  • Private Nachricht senden

4

28.02.2015, 10:46

Danke erstmals. Inzwischen implementiere ich alles im Hauptloop, mache dort eine Art Umleitung,
wenn gerade ins Feld geschrieben werden soll.
Ich bin schon dabei :)
Oft denke ich an sie, niemals habe ich sie gefragt, niemals etwas gesagt,
nur verzweifelt am PC gesessen und dabei die Zeit vergessen, sie ist weg.

Werbeanzeige