SFML sf :: Text :: setFillColor坏了还是我做错了什么?

时间:2017-01-04 19:15:04

标签: c++ sfml

我编写的代码仅显示状态堆栈顶级状态的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();
}

2 个答案:

答案 0 :(得分:0)

这可能是因为你在GameState_MainMenu :: handleRealTimeInput中有一个while循环,程序被卡住了。

您可以尝试使用线程,但这种方式可能会非常混乱。我建议修改你的代码。

答案 1 :(得分:0)

好的,所以我发现这与每个指令的c ++有关。一旦我切换到类似经典阵列的遍历,我的按钮就开始改变颜色。我不是说这是解决方案,只是它对我有用。如果有人遇到同样的问题,你可能想检查一下。