您可以閱讀鼠標滾輪爲被調查事件循環的一部分每幀一次:
int main()
{
sf::RenderWindow window(sf::VideoMode(320, 256), "Title");
sf::Event event;
while(window.isOpen())
{
while(window.pollEvent(event))
{
if(event.type == sf::Event::Closed)
window.close();
else if(event.type == sf::Event::MouseWheelMoved)
{
// display number of ticks mouse wheel has moved
std::cout << event.mouseWheel.delta << '\n';
}
}
window.clear();
// draw window here
window.display();
}
}
注:對於SFML 2.3
感謝@Hiura指出,sf::Event::MouseWheelMoved
是已棄用於SFML 2.3
。
Use this instead:
if(event.type == sf::Event::MouseWheelScrolled)
{
if(event.mouseWheelScroll.wheel == sf::Mouse::VerticalWheel)
std::cout << "wheel type: vertical" << std::endl;
else if(event.mouseWheelScroll.wheel == sf::Mouse::HorizontalWheel)
std::cout << "wheel type: horizontal" << std::endl;
else
std::cout << "wheel type: unknown" << std::endl;
std::cout << "wheel movement: " << event.mouseWheelScroll.delta << std::endl;
std::cout << "mouse x: " << event.mouseWheelScroll.x << std::endl;
std::cout << "mouse y: " << event.mouseWheelScroll.y << std::endl;
}
[本答案是在2.3棄用。](http://www.sfml-dev.org/tutorials/2.3/window-events.php#the-mousewheelmoved-event)使用改爲'MouseWheelScrolled'。 – Hiura
@Hiura謝謝,我已經更新了答案以包含您的信息。 – Galik