【发布时间】:2017-04-10 20:46:20
【问题描述】:
在游戏更新循环中计算 bool 标志从 false 变为 true 的次数的最佳方法是什么?例如,如果我在下面有这个简单的示例,如果您按住按钮“A”按下 Input 类将 Game 类的 enable bool 设置为 true,如果您释放它,则将其设置为 false,并且 Game 类中的计数器计数启用多少次从真更改为假。例如,如果您按“A”并释放两次计数器应更新为 2。让 Game::Update() 以 60fps 更新,当前方法的计数器将是错误的。为了解决这个问题,我将检查和计数器移到了 SetEnable 中,而不是 Update 循环中。
// Input class
// Waits for input
void Input::HandleKeyDown()
{
// Checks if key A is pressed down
if (key == KEY_A)
game.SetEnable(true);
}
void Input::HandleKeyUp()
{
// Checks if key A is released
if (key == KEY_A)
game.SetEnable(false);
}
// Game class
void Game::SetEnable(bool enable)
{
if(enable == enable_)
return;
enable_ = enable;
//Will increment the counter as many times A was pressed
if(enable)
counter_ += 1;
}
void Game::Update()
{
// Updates with 60fps
// Will increment the counter as long as A is pressed
/*
if(enable_ == true)
counter_ += 1;
*/
}
【问题讨论】:
-
在您更改状态时更新计数器。因此,如果按下 KEY_A,并且 enable_ 为 false,则更改为 true 并计数。
-
计数器并没有真正计算启用更改的次数。
-
由于问题不清楚,我不得不重新措辞并添加更多细节。让我知道是否需要进一步更新。
标签: c++