2015-06-01 6 views
1

Я делаю форму в коробке. Я должен дать ввод, и все, что я ввешиваю, будет отображаться в поле по мере ввода. Я дошел до того, что получаю вход, но я не могу показать на коробке.Как показать в реальном времени выход SFML

Вот фрагмент кода:

case Event::TextEntered: 
    if (isSelected) 
    { 
     char print; 
     int xcor = 149; 
     sf::Text t; 
     t.setFont(font); 
     do 
     { 
      print = event.text.unicode; 
      //149.25 

      t.setCharacterSize(15); 
      t.setColor(Color::Black); 
      t.setString(print); 
      t.setPosition(xcor+1, 25); 
      window.draw(t); 
      //window.display(); 
     } while (event.text.unicode!=13); 

     //cout << (char) event.text.unicode;  
    } 
    break; 

ответ

3

Вы должны нарисовать текст каждый кадр, существует ли TextEntered события или нет. Вам также понадобится строка для хранения текста. Таким образом, ваш основной цикл будет выглядеть примерно так:

sf::String text_string; 
sf::Text text; 
text.setCharacterSize(15); 
text.setColor(Color::Black); 
text.setPosition(150, 25); 

while (window.isOpen()) 
{ 
    // Process events 
    sf::Event event; 
    while (window.pollEvent(event)) 
    { 
     switch (event.type) 
     { 
      case Event::TextEntered: 
       if (isSelected) 
       { 
        text_string += sf::String(event.text.unicode); 
        text.setString(text_string); 
       } 
       break; 

      // other events ... 
     } 

    } 

    window.clear(); 
    window.draw(text) 
    window.display(); 
} 
+0

не может его обработать. У меня есть слои форм, и если я назову четкие и т. д. функции, то мерцание. Я хочу щелкнуть в поле, затем написать ввод и показать его в режиме реального времени. какова его альтернатива? –

Смежные вопросы