[SFML] Wpisywanie tekstu i jednoczesne wyswietlanie
Ostatnio zmodyfikowano 2014-06-13 15:05
kamilall234 Temat założony przez niniejszego użytkownika |
[SFML] Wpisywanie tekstu i jednoczesne wyswietlanie » 2014-06-09 23:59:07 Witam. Od razu powiem, że jestem zielony z SFML, a robie swój projekt. Napisana gra w konsoli, musze przełożyć na SFML z prosta sztywną byle jaka grafika. Potrzebuje pomocy, mianowicie chcę wpisywać nazwy graczy do zmiennych, klikam na Okno w grze i wpisuje nazwe gracza, jednocześnie to co piszę mi się wyświetla. Czytam o czymś takim jak TextEntered. ALe nie mam pojęcia jak mam to zrobić. Do tego czy wpisanie licz w SFML, może przekonwertować je do zmiennej int ? - bo będę podawał jeszcze początkowy stan konta. |
|
maly |
» 2014-06-10 06:53:32 The TextEntered eventif( event.type == sf::Event::TextEntered ) if( std::isprint( static_cast < wchar_t >( event.text.unicode ), std::locale() ) ) text.setString( text.getString() + event.text.unicode ); Pytanie o konwersje string na int jest niepoważne więc nie pomogę. |
|
Hipochondryk |
» 2014-06-11 22:48:51 Event zdarzenie; int code = 0; to dodaj do pętli zdarzeń. if( zdarzenie.type == Event::TextEntered ) { code = zdarzenie.text.unicode; } else code = 0;
potem sprawdzaj czy code jest != od 0 i dodawaj do jakiegoś stringa. |
|
maly |
» 2014-06-12 07:51:17 @Hipochondryk Bez sprawdzenia czy zdarzenie.text.unicode jest znakiem drukowalnym do stringa dodawać się będą kody klawiszy funkcyjnych. |
|
Hipochondryk |
» 2014-06-12 20:22:46 funkcja ta automatycznie sprawdza czy został wprowadzony tekst (Event::TextEntered) i podaje kody tylko klawiszy z literami, cyframi a klawisze funkcjonalne pomija ponieważ to nie jest text, i do nich służy inna funkcja. |
|
maly |
» 2014-06-12 20:28:55 Mylisz się spróbuj nacisnąć Enter, Backspace lub Ctrl+znak. |
|
Hipochondryk |
» 2014-06-13 10:34:06 przy enterze nic się nie dzieje - czyli działa prawidłowo zależnie od punktu widzenia ( w moim przypadku prawidłowo, lecz ktoś inny może mieć potrzebe przejscia do nowej lini więc sam to osbłuży.) , przy backspace kasuje - również działa prawidłowo, a z ctrl + klawisz masz racje, nie zwróciłem na to uwagi wcześniej. |
|
maly |
» 2014-06-13 12:34:44 Będę drążył temat:) Jeśli taki kod po naciśnięciu Backspace kasuje text to ja mam innego SFML-a niż Ty bo u mnie pojawi sie tylko dodatkowy znak w formie gustownego prostokącika, tak samo jest z klawiszem Enter i Esc. #include <SFML/Graphics.hpp>
int main() { sf::RenderWindow window( sf::VideoMode( 800, 150, 32 ), "Hello world" ); sf::Font font; font.loadFromFile( "arial.ttf" ); sf::Text text( "ala", font ); while( window.isOpen() ) { sf::Event event; sf::Uint32 unicode = 0; while( window.pollEvent( event ) ) { if( event.type == sf::Event::Closed ) window.close(); if( event.type == sf::Event::TextEntered ) unicode = event.text.unicode; } if( unicode ) { sf::String str = text.getString(); str += unicode; text.setString( str ); } window.clear(); window.draw( text ); window.display(); } return 0; } |
|
« 1 » 2 |