Смена спрайта при наведении мыши

Как мне сменить спрайт при наведении на исходный? У меня там плашка с пунктом меню, и при наведении на неё нужно сменить её на другую. Я проверил: у меня происходит зацикливание, в консоли постоянно 1 пишет. Булевская переменная в if - это нужная переменная, ее не надо трогать, можно добавлять свои булевские. Первый if для наглядности, как отображаются спрайты на экране, но, возможно, и в нем нужно что-то поменять. drawmainstartgamebuttonON / OFF - как раз те самые спрайты которые нужно менять между собой, startgamebuttonspron - отображает исходный спрайт на экран, это то же, что и startgamebutton.drawmainstartgamebuttonON();. Я новичок в SFML, прошу совета.

if (loadlobbymousebutton && ev.type == sf::Event::MouseButtonPressed && ev.mouseButton.button == sf::Mouse::Left) { // Проверка на нажание ЛКМ
        loadlobbymousebutton = false;
        win.clear();
        mainmenu.drawmainmenu();
        TagTextoncinemaloadloobysprite.setPosition(525, 10);
        TagTextoncinemaloadloobysprite.setScale(2.5f, 2.5f);
        win.draw(TagTextoncinemaloadloobysprite);
        startgamebutton.drawmainstartgamebuttonON();
        settingsbutton.drawmainsettingsbutton();
        faqbutton.drawmainFAQ();
        exitbutton.drawmainExit();
        win.display();
    }
    if (!loadlobbymousebutton && ev.type == sf::Event::MouseMoved) {
        if (startgamebutton.startgamebuttonspron.getGlobalBounds().contains(sf::Mouse::getPosition(win).x, sf::Mouse::getPosition(win).y)) {
            startgamebutton.drawmainstartgamebuttonOFF();
            cout << "1" << endl;
        }
        else {
            startgamebutton.drawmainstartgamebuttonON();
            cout << "2" << endl;
        }

Ответы (0 шт):