更改字体颜色时违反 SFML 访问冲突
SFML access violation when changing font color
我的程序的菜单类有问题。当我尝试切换菜单文本颜色时:
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();
}
}
在 Xan-Man.exe 中0x51D45960 (sfml-graphics-d-2.dll( 引发异常: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而不是我自己的类来实现它,但它不起作用。即使我没有设置字体,我也有同样的问题。
不知何故,当我在键盘上单击一次时,它可以工作,但是当我向上单击时,它会立即停止并且不会切换。
可能不是错误的原因,但如果selectedItemIndex
是无符号整数,那么条件if (selectedItemIndex -1 >= 0)
可能会导致错误,如果selectedItemIndex
为 0,因为它将导致触发语句。
因此,selectedItemIndex
将下溢并回包装到该类型中可表示的最大可能值。对此,它将尝试访问可能导致错误的越界元素。
尝试将语句更改为if (selectedItemIndex > 0)
如果这不能解决它,那么您需要向我们提供更多信息和/或代码。
相关文章:
- 写入位置0x0000000C时发生访问冲突
- 引发异常:读取访问冲突**dynamicArray**为0x1118235.发生
- 链表中写入访问冲突的未知原因
- C++中的openCV Mat访问冲突
- C++尝试深度复制唯一指针时出现内存访问冲突
- C++ 中动态二维数组的访问冲突
- 从嵌套循环中的 std::list 中删除将返回访问冲突
- 写入访问冲突异常
- 在类 12.exe 中0x7B37FF80 (ucrtbased.dll) 引发异常: 0xC0000005:访问冲突读
- 0xC0000005:访问冲突写入位置0xCDCDCDCD动态分配错误
- 读取访问冲突.这0xCDCDCDCD
- 0xC0000005:访问冲突读取位置 0x00000000. 重载 == 运算符的问题
- 插入数组时违反写访问冲突
- 使用 ReadProcessMemory 获取字符串值的访问冲突
- 尝试通过共享指针使用变量时读取访问冲突
- 堆栈上的 C++ 访问冲突写入异常
- 更改字体颜色时违反 SFML 访问冲突
- 访问冲突写入位置0x00000000.C++/SFML游戏
- 试图创建SFML窗口时发生访问冲突
- 资源联合抛出SFML中字体的访问冲突