我编写的代码仅显示状态堆栈顶级状态的sf :: Drawable对象。渲染适用于除sf :: Text类型之外的所有内容,当调用button.getText()。setFillColor(sf :: Color:Red)时,它不会更改文本的颜色。但是,当我构建一个带有红色文本的按钮时,每当我尝试为该按钮设置另一种颜色时,无论我要求的颜色是什么,我都只会得到一个白色文本。
我在这里改变按钮的颜色:
slider?.translatesAutoresizingMaskIntoConstraints = false
这是我的Game :: render()方法:
void GameState_MainMenu::handleRealTimeInput()
{
for each (TextButton button in mButtons)
{
if (button.isSpriteClicked())
{
button.getText().setFillColor(sf::Color::Red);
button.triggerAction();
sf::Clock wait;
sf::Time timer = sf::Time::Zero;
timer = sf::seconds(0.15f);
while (wait.getElapsedTime() < timer)
{
}
wait.restart();
}
}
}
最后,这是MainMenu状态的draw方法:
void Game::render()
{
GameState *currentState = getActiveState();
if (currentState != nullptr)
{
mWindow.clear();
currentState->draw();
}
mWindow.display();
}
答案 0 :(得分:0)
这可能是因为你在GameState_MainMenu :: handleRealTimeInput中有一个while循环,程序被卡住了。
您可以尝试使用线程,但这种方式可能会非常混乱。我建议修改你的代码。
答案 1 :(得分:0)
好的,所以我发现这与每个指令的c ++有关。一旦我切换到类似经典阵列的遍历,我的按钮就开始改变颜色。我不是说这是解决方案,只是它对我有用。如果有人遇到同样的问题,你可能想检查一下。