Код, который я написал, отображает объекты sf :: Drawable только для верхнего состояния стека состояний. Рендеринг работает отлично для всего, кроме sf :: Text type, который не меняет цвет текста, когда button.getText() вызывается setFillColor (sf :: Color: Red). Однако, когда я создаю кнопку с красным текстом, всякий раз, когда я пытаюсь установить другой цвет этой кнопки, я получаю только белый текст, независимо от того, какой цвет я запрашиваю.SFML sf :: Text :: setFillColor нарушен, или я делаю что-то неправильно?
Вот где я изменить цвет кнопки:
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();
}
}
}
и это моя игра :: визуализации() метод:
void Game::render()
{
GameState *currentState = getActiveState();
if (currentState != nullptr)
{
mWindow.clear();
currentState->draw();
}
mWindow.display();
}
Наконец, это метод Жеребьевка MainMenu состояние:
void GameState_MainMenu::draw()
{
game->mWindow.draw(game->mBackground);
game->mWindow.draw(mSelector.mSprite);
for each (TextButton button in mButtons)
{
game->mWindow.draw(button.getText());
}
}
'для каждого'? Это C++? – Unimportant
Да, это функция C++ 11 (может быть, и не так). – ijustpostedsomethingdumb
Кажется, что это специфичная для MS вещь, прежде чем диапазон, основанный на цикле, был введен в C++ 11: http://stackoverflow.com/questions/9182879/which-is-preferable-for-each-in-or-for -Каждый. – Unimportant