检查鼠标滚轮状态 SFML
Check mouse wheel state SFML
在我的程序中,我希望能够知道鼠标滚轮是否已滚动,如果是,则向哪个方向滚动了多少。这可以通过C++和SFML来实现吗?
到目前为止,我有这个:
if (sf::Event::MouseWheelEvent().delta != 0)
{
SimulationView.zoom(1 + (10 / sf::Event::MouseWheelEvent().delta));
}
但是第二行永远不会消失,即使我滚动鼠标滚轮也是如此
您可以将鼠标滚轮作为每帧轮询一次的事件循环的一部分读取:
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
中已弃用。
请改用这个:
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;
}
相关文章:
- SFML纹理像播放器
- 如何使用AngelScript注册SFML Vector2运算符
- 如何修复sfml c++代码编译错误
- Constexpr替代了新的放置方式,可以让内存中的对象保持未初始化状态
- SFML library: http request
- 落砂模拟碰撞检测C++和SFML
- 我不断收到 [错误] ID 返回 1 退出状态错误,但看不到问题所在
- OSX MetalKit CVMetalTextureCacheCreateTextureFromImage失败,状态:
- 使用 SFML 和 C++ 将 Pixel 打印到屏幕上
- std::future_error:无关联状态
- SFML RenderWindow打开窗口需要很长时间
- 矢量下标超出SFML游戏中的范围
- 获取 SFML 窗口的 HWND 和高可用性?
- 如何避免LED在循环状态变化中闪烁?
- 将 Vulkan 与 SFML 结合使用?
- SFML 文本未绘制在窗口上
- boost 是否有按特殊类型值编码状态"compact optional"?
- SFML 碰撞永远不会在我的系统中注册
- 使用对象数组对 SFML 进行动画处理
- 检查鼠标滚轮状态 SFML