【发布时间】:2021-06-27 10:03:48
【问题描述】:
我正在为我的图形使用 sfml 库。在暂停期间,我想避免在屏幕上绘图。我想使用 sf::Event::MouseButtonPressed 拦截空格键。在调试模式下,事件拦截成功,但正常执行失败,为什么?布尔变量“暂停”似乎没有更新。
while (window.isOpen()) {
Event event;
while (window.pollEvent(event)) {
/*..*/
if (event.type = Event::KeyPressed) {
if (event.key.code == Keyboard::Space) {
if (!paused) {
paused = true;// UDATE HERE
}
else
if (paused)
{
paused = false; // UDATE HERE
}
}
}
}
if (!paused) //// UDATE DONT SEEM TO AFFECT HERE
{
/* draw here */
}
}
已编辑:甚至尝试将变量 paused 声明为原子,但仍然不起作用。
【问题讨论】:
-
请尝试创建minimal reproducible example 向我们展示。尝试创建此类示例的过程可能会帮助您发现问题。
-
另外,如果某些东西似乎在“调试”构建中有效,但在(优化的)“发布”构建中失败,这主要表明您做了导致未定义行为。使用额外的警告构建并将任何可能的警告视为必须修复的错误。这应该是避免此类问题的良好开端。如果您没有收到任何警告,那么您需要使用其他调试方法(rubber duck 或“printf”调试)以及对您的minimal reproducible example 进行代码审查以帮助解决问题。也许您拥有并使用未初始化的变量?
-
我将更改代码以使其最小化