Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[SFML] Wpisywanie tekstu i jednoczesne wyswietlanie

Ostatnio zmodyfikowano 2014-06-13 15:05
Autor Wiadomość
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.
P-111871
maly
» 2014-06-10 06:53:32
The TextEntered event

C/C++
if( 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ę.
P-111872
Hipochondryk
» 2014-06-11 22:48:51
C/C++
Event zdarzenie;
int code = 0;
to dodaj do pętli zdarzeń.
C/C++
if( zdarzenie.type == Event::TextEntered )
{
    code = zdarzenie.text.unicode;
}
else code = 0;

potem sprawdzaj czy code jest != od 0 i dodawaj do jakiegoś stringa.
P-111962
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.
P-111977
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.
P-112001
maly
» 2014-06-12 20:28:55
Mylisz się spróbuj nacisnąć Enter, Backspace lub Ctrl+znak.
P-112002
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.
P-112024
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.
C/C++
#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;
}
P-112026
« 1 » 2
  Strona 1 z 2 Następna strona