【问题标题】:Key press in SFMLSFML 中的按键
【发布时间】:2022-11-14 00:19:56
【问题描述】:

我正在尝试在 sfml 中制作按键系统,但我目前实施的方式仅返回按键而不是单按键。 我希望用户按下某个键并将分数增加 1,这意味着我需要检查按键而不是按住。

if (sf::Keyboard::isKeyPressed(Input::sfml_keys[2]))
{
    HandleButton(Input::sfml_keys[2]);
    std::cout << "g" << std::endl;
}

这就是我目前使用的将数据发送到 HandleButton 的方法:

void Keyboard::HandleButton(int key)
{
    m_key = key;

    switch (m_key)
    {
    //G key has keypressed and Increase score events
    case 6:
    {
        if (m_key == sf::Keyboard::G)
        {
            Event* keyboard_event = new Event(m_key, EventType::KeyReleased);
            EventHandler::AddEvent(keyboard_event);

            Event* increaseScore = new Event(EventType::IncreaseScore);
            EventHandler::AddEvent(increaseScore);
        }
        break;
    }

我想知道是否有人可以告诉我如何在 SFML 中实现按键而不是按住。

我尝试使用 KeyRelease 而不是 KeyPressed,但问题在于我不知道要更改什么的初始代码块。

【问题讨论】:

    标签: c++ keyboard sfml keypress


    【解决方案1】:

    我修好了哈哈

        if (sf::Keyboard::isKeyPressed(sf::Keyboard::Key::G))
    {
        if (!keys[sf::Keyboard::Key::G])
        {
            HandleButton(Input::sfml_keys[2]);
            std::cout << "g" << std::endl;
        }
        keys[sf::Keyboard::Key::G] = true;
    }
    else keys[sf::Keyboard::Key::G] = false;
    

    【讨论】:

      猜你喜欢
      • 2014-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-22
      • 2013-07-27
      • 2019-03-01
      • 2012-05-28
      • 1970-01-01
      相关资源
      最近更新 更多