• Keyboard, mouse and joystick


    Introduction

    本教程介绍如何访问全局输入设备:键盘、鼠标和操纵杆。这不能与事件混淆。实时输入允许您随时查询键盘、鼠标和操纵杆的全局状态(“当前是否按下此按钮?”,“鼠标当前在哪里?”)当事件发生时通知您(“此按钮已按下”,“鼠标已移动”)。

    Keyboard

    提供对键盘状态访问的类是sf::keyboard。它只包含一个功能isKeyPressed,用于检查按键(按下或释放)的当前状态。它是一个静态函数,所以您不需要实例化sf::Keyboard来使用它。

    此函数直接读取键盘状态,忽略窗口的焦点状态。这意味着即使您的窗口处于非活动状态,isKeyPressed也可能返回true。

    if (sf::Keyboard::isKeyPressed(sf::Keyboard::Left))
    {
        // left key is pressed: move our character
        character.move(1.f, 0.f);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    键代码在sf::Keyboard::Key枚举中定义。

    根据您的操作系统和键盘布局,某些键代码可能丢失或解释不正确。这将在SFML的未来版本中得到改进。


    Mouse

    提供对鼠标状态的访问的类是sf::Mouse。与它的朋友sf::Keyboard一样, sf::Mouse只包含静态函数,不打算被实例化(SFML目前只处理一个鼠标)。

    您可以检查按钮是否按下:

    if (sf::Mouse::isButtonPressed(sf::Mouse::Left))
    {
        // left mouse button is pressed: shoot
        gun.fire();
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    鼠标按钮代码在sf::Mouse::Button enum中定义。SFML最多支持5个按钮:左、右、中(轮子)和两个附加按钮。

    您还可以获取并设置鼠标相对于桌面或窗口的当前位置:

    sf::Vector2i globalPosition = sf::Mouse::getPosition();
    
    // get the local mouse position (relative to a window)
    sf::Vector2i localPosition = sf::Mouse::getPosition(window); // window is a sf::Window
    
    • 1
    • 2
    • 3
    • 4
    // set the mouse position globally (relative to the desktop)
    sf::Mouse::setPosition(sf::Vector2i(10, 50));
    
    // set the mouse position locally (relative to a window)
    sf::Mouse::setPosition(sf::Vector2i(10, 50), window); // window is a sf::Window
    
    • 1
    • 2
    • 3
    • 4
    • 5

    没有读取鼠标滚轮当前状态的功能。由于车轮只能相对移动,因此没有可查询的绝对状态。通过看一个键,你可以判断它是被按下还是被释放。通过观察鼠标光标,您可以知道它在屏幕上的位置。然而,看着鼠标滚轮并不能告诉你它在哪个“滴答”上。您只能在它移动时收到通知(MouseWheelScrolled事件)。


    Joystick

    有关操作杆这里省略,需要请自查。

  • 相关阅读:
    Go 语言结构体验证详解:validate 标签与自定义规则
    攻防世界misc
    axios的post请求所有传参方式
    爆字段名中select * from users as a join users解释
    ncnn神经网络计算框架在香橙派OrangePi 3 LTS开发板中的使用介绍
    vue3 + axios 中断取消接口请求
    Excel快捷键表
    Angr-CTF学习笔记11-13
    突破编程_C++_高级教程(正则表达式编程实例)
    国产视觉检测设备崛起,以AI机器视觉及自研算法破解智造难题
  • 原文地址:https://blog.csdn.net/Phantom_matter/article/details/125534501