使用鼠标滚轮时如何更新光标?

时间:2015-07-13 02:59:09

标签: c++ visual-studio visual-c++ sprite sfml

我的问题是,当我用鼠标滚轮移动视图时,光标精灵 留在后面,它没有更新到光标本身,我该如何解决这个问题?

主要游戏圈:

this->cursor->Update(window);

if (event->type == sf::Event::MouseWheelMoved)
{
    if (event->mouseWheel.delta == 1)
    {
        this->view->move(sf::Vector2f(0, -25));
        window->setView(*this->view);
        event->mouseWheel.delta = 0;
    }
    else if (event->mouseWheel.delta == -1)
    {
        this->view->move(sf::Vector2f(0, 25));
        window->setView(*this->view);
        event->mouseWheel.delta = 0;
    }
}

光标更新功能:

this->setPosition(static_cast<sf::Vector2f>(sf::Mouse::getPosition(*window)));

Github链接: Capitalist Adventure - Project In Question

1 个答案:

答案 0 :(得分:1)

在查看SFML论坛之后,我找到了为什么设置的精灵位置函数没有将我的精灵光标设置到我的鼠标的答案。原因是sf :: View在屏幕上的坐标混乱。

<强>答案:

this->setPosition(window->mapPixelToCoords(sf::Mouse::getPosition(*window)));