2016-10-25 4 views
0

Ich hatte gerade angefangen zu lernen SFML 2.0 und ich stehe ein kleines Problem. Das Problem ist, dass, wenn ich Knopf "A" drücke, dann in Ausgabe auch, dass "Maus Linke Taste gedrückt" .Ich verwende code :: Block 16.04 und SFML 2.0. Dasselbe passiert mit dem "MouseWheelMoved" -Ereignis, wenn ich irgendeine andere Nummer drücke, dann zeigt es die Nachricht "MouseWheelMoved" an. Hier ist der Code.Wenn A gedrückt wird linke Maustaste auch gedrückt in SFML 2.0

#include <SFML/Graphics.hpp> 
#include <iostream> 
int main() 
{ 
    sf::RenderWindow window(sf::VideoMode(400,400),"All Events "); 
    sf::Event event; 
    window.setKeyRepeatEnabled(false); 
    while(window.isOpen()) 
    { 
     while(window.pollEvent(event)) 
     { 
      switch(event.type) 
      { 
      case sf::Event::Closed: 
       window.close(); 
       break; 
      case sf::Event::KeyPressed: 
       switch(event.key.code) 
       { 
       case sf::Keyboard::A: 
        std::cout<<"A Button Pressed "<<std::endl; 
        break; 
       case sf::Keyboard::S: 
        std::cout<<"S Button Pressed "<<std::endl; 
        break; 
       case sf::Keyboard::D: 
        std::cout<<"D Button Pressed "<<std::endl; 
        break; 
       case sf::Keyboard::W: 
        std::cout<<"W Button Pressed "<<std::endl; 
        break; 
       case sf::Keyboard::Return: 
        std::cout<<"Enter Button Pressed"<<std::endl; 
        break; 
       case sf::Keyboard::Up: 
        std::cout<<"Up Button Pressed "<<std::endl; 
        break; 
       } 
       case sf::Event::MouseButtonPressed: 
        if(event.mouseButton.button == sf::Mouse::Left)  {std::cout<<"Mouse Left Button Pressed "<<std::endl; 
        break;} 
        else if(event.mouseButton.button == sf::Mouse::Right){std::cout<<"Mouse Right Button Pressed"<<std::endl; 
        break;} 
       case sf::Event::MouseWheelMoved: 
        std::cout<<"Mouse Wheel Moved "<<event.mouseWheel.delta<<std::endl; 
        break; 
      } 
     } 
    } 
} 
+3

Hüllen 'sf :: Ereignis :: KeyPressed' und' sf :: Ereignis :: MouseButtonPressed' kaskadieren . Gib es einen _break_. – Doom5

Antwort

3

Sie haben zwei switch verschachtelten, Sie sind in einer von ihnen eine Pause fehlt

switch(event.type) // switch 1 
{ 
    // (...) 
    case sf::Event::KeyPressed: 
     switch(event.key.code) // switch 2 
     { 
     case sf::Keyboard::A: 
      std::cout<<"A Button Pressed "<<std::endl; 
      break; // <- this breaks switch 2 and... 
     // (...) 
     } 
     // ...you end up here. Here switch 1 doesn't have a break 
     // so it falls through to the next case. 
     case sf::Event::MouseButtonPressed: 
     // (...) 
     // here also falls through. 
     case sf::Event::MouseWheelMoved: 
      std::cout<<"Mouse Wheel Moved "; 
      break; 
} 
Verwandte Themen