2016-10-25 2 views
0

SFML 2.0을 배우기 시작했고 조금 문제가 있습니다. 문제는 내가 "Button"A를 누른 다음 Output에서도 "Mouse Left Button Pressed"를 표시한다는 것입니다. code :: block 16.04 및 SFML 2.0을 사용하고 있습니다. 다른 번호를 누르면 "MouseWheelMoved"이벤트와 동일한 문제가 발생하고 "MouseWheelMoved"메시지가 표시됩니다. 여기에 코드가 있습니다.SFML 2.0에서 A 키를 누른 경우에도

#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

케이스'김포 :: 이벤트 :: KeyPressed'와'김포 :: 이벤트 :: MouseButtonPressed'에게에서 휴식을 누락하는 두 개의 계단식 당신은이 . 그것을 _break_주세요. – Doom5

답변

3

switch 중첩, 당신은 그들 중 하나

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; 
} 
관련 문제