2016-06-18 19 views
0

Ich mache ein Schulprojekt über Bildbearbeitung und ich benutze sfml, um etwas wie eine Konsole, aber ein bisschen mehr "schön".SFML-Ereignis :: TextEntered funktioniert nicht richtig

while (window.isOpen()) { 
     Event event; 
     while (window.pollEvent(event)) { 

      if (event.type == Event::Closed) 
       window.close(); 
     } 
     if (event.type == sf::Event::TextEntered) 
     { 
      //display text on screen 
     } 
    } 

Das Problem ist, dass, wenn ich eine bestimmte Taste drücken kurz auf dem Display erscheint es wie ich den Schlüssel für eine lange Zeit habe halten ...

Beispiel: Drücken G, in der Erwartung zu sehen nur 1 G auf dem Bildschirm, sondern auf den Bildschirmen erscheint wie 20 G.

Antwort

0

Ihre if innerhalb der Schleife Ereignisabfrage gehört:

while (window.isOpen()) 
{ 
    Event event; 
    while (window.pollEvent(event)) 
    { 

     if (event.type == Event::Closed) 
      window.close(); 

     if (event.type == sf::Event::TextEntered) 
     { 
      //display text on screen 
     } 
    } 
} 

Von Ihrem Beschreibung, es ist wahrscheinlich mehr schief gelaufen, aber Sie müssen mehr Code posten, um das zu sehen.

0

Ich denke, das liegt daran, dass, wenn eine Taste gedrückt, dass das Signal gesendet wird immer, so dies versuchen:

sf::RenderWindow window(...); 
window.setKeyRepeatEnabled(false); 
while(...) 
{ 
    stuff... 
}