[gelöst]Textstelle zurücksetzen (leeren)
-
Hallo,
ich habe ein Problem mit SFML:
Ich versuche einen Timer am Screen auszugeben, was eigentlich so weit funktioniert, nur hängt der Timer an der Textausgabe immer nur ein Zeichen an, statt das alte zu ersetzen.
So dass die Ausgabe so aussieht:0000000011111111222222222Bisher hab ich den Code so geschrieben:
int main() { sf::RenderWindow Window(sf::VideoMode(800, 600, 32), "Spiel"); Window.setFramerateLimit(120); sf::Image spriteAlsBild; sf::Texture spriteAlsTextur; sf::Clock Zeit; sf::Text ZeitalsText; sf::Time ZeitalsTime; float ZeitalsFloat; int ZeitalsInt; char ZeitalsString[5]; while (Window.isOpen()) { Window.clear(sf::Color::Black); //Zeit ZeitalsTime = Zeit.getElapsedTime(); ZeitalsFloat=ZeitalsTime.asSeconds(); ZeitalsInt=int(ZeitalsFloat); out << ZeitalsInt; std::string ZeitalsString = out.str(); sf::Text ZeitalsText(ZeitalsString); std::cout<<ZeitalsFloat<<"\n"; sf::sleep(sf::milliseconds(100)); ZeitalsText.setString(ZeitalsString); ZeitalsText.setPosition(350,25); Window.draw(ZeitalsText); //Anzeigen Window.display(); } return 0; }Wisst ihr, welche Funktion ich benutzen muss um den Wert des Textfelds zurückzusetzen?
Mit freundlichen Grüßen,
Thronx
-
Du hast sehr viel Redundanz im Code. Du deklarierst viel zu viele Variablen, um ein und dasselbe zu repräsentieren. Wozu brauchst du
sf::Image, warum hast du Zeit in 4 verschiedenen Datentypen gespeichert? Räum ein bisschen auf, kein Wunder dass du so den Durchblick verlierst.Das Wichtigste, nämlich
out, hast du dafür nicht gezeigt. Bitte schau, dass du wirklich minimale und vollständige Codebeispiele hast, dann muss man nicht rumraten und verliert keine Zeit mit dem Durchforsten durch irrelevanten Code. Zum Beispiel hat dein Problem überhaupt nichts mit SFML zu tun, du hättest das gleiche auch mit 4 Mal weniger Code in der Konsole testen können.Meine Glaskugel sagt mir, du sollst
out.str("")aufrufen. Aber räum diesen Code auf und benutze keine globalen Variablen!
-
Hallo, Nexus,
danke für deine Tipps.
Es war wirklich Zeit den überschüssigen Code aufzuräumen.
Ich habe wohl wirklich einfach den Überblick verloren.
Ich dachte, dass es daran liegt, dass das "Textfeld" immer den String an den anhängt, der als letztes drin war. (Anfängerfehler
)
Ich habs jetzt mit "itoa()" versucht und es ging.Also nochmal danke, dass du mich auf die richtige Spur gebracht hast, sonst hätte ich da wohl noch ein paar Stunden dran gesessen ohne den Fehler zu finden.
Mit freundlichen Grüßen,
Thronx