У меня проблема в классе меню в моей программе. Когда я пытаюсь переключить цвет текста меню:
void Menu::moveUp()
{
if (selectedItemIndex -1 >= 0)
{
menuLabel[selectedItemIndex].setColor(false);
selectedItemIndex--;
menuLabel[selectedItemIndex].setColor(true);
}
}
void Menu::moveDown()
{
if (selectedItemIndex + 1 < NUMBER_OF_MENU_LABELS)
{
menuLabel[selectedItemIndex].setColor(false);
selectedItemIndex++;
menuLabel[selectedItemIndex].setColor(true);
}
}
void Menu::update()
{
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Up))
{
moveUp();
}
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Down))
{
moveDown();
}
}
Исключение по адресу 0x51D45960 (sfml-graphics-d-2.dll) в Xan-Man.exe: 0xC0000005: адрес записи нарушения прав доступа 0x00000008.
в функции
void Writing::setColor(bool color)
{
if (color)
{
text.setFillColor(sf::Color(0, 255, 255));
}
else
{
text.setFillColor(sf::Color(255, 255, 255));
}
}
Я пытался реализовать это с помощью sf::Text не моего собственного класса, но это не сработало. Даже когда я не устанавливал шрифт, у меня была та же проблема.
Каким-то образом, когда я нажимаю один раз вниз на клавиатуре, она работает, но когда я нажимаю вверх, она сразу останавливается и не переключается.