Der Code, den ich geschrieben habe, zeigt die sf :: Drawable Objekte nur für den obersten Status des Statusstacks an. Rendering funktioniert für alles, außer für den sf :: Text-Typ, der die Farbe des Textes nicht ändert, wenn button.getText(). SetFillColor (sf :: Color: Red) aufgerufen wird. Wenn ich jedoch eine Schaltfläche mit einem roten Text konstruiere, erhalte ich immer dann, wenn ich versuche, eine andere Farbe für diese Schaltfläche festzulegen, einen weißen Text, egal welche Farbe ich anfrage.SFML sf :: Text :: setFillColor ist kaputt oder mache ich etwas falsch?
Hier ist, wo ich die Farbe einer Schaltfläche ändern:
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();
}
}
}
und das ist mein Spiel :: render() Methode:
void Game::render()
{
GameState *currentState = getActiveState();
if (currentState != nullptr)
{
mWindow.clear();
currentState->draw();
}
mWindow.display();
}
Schließlich ist dies die Zeichenmethode des MainMenu Zustand:
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());
}
}
'für jeden'? Ist das C++? – Unimportant
ja, es ist eine C++ 11-Funktion (könnte falsch sein). – ijustpostedsomethingdumb
Scheint eine MS-spezifische Sache zu sein, bevor die bereichsbasierte for-Schleife in C++ 11 eingeführt wurde: http://stackoverflow.com/questions/9182879/which-is-preferable-for-e-in-o-for-for-for -jeder. – Unimportant