我寫的代碼僅顯示狀態堆棧頂部狀態的sf :: Drawable對象。除了sf :: Text類型之外,渲染對一切都很好,當調用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();
}
}
}
,這是我的遊戲:: render()方法:
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());
}
}
'for each'?這是C++嗎? – Unimportant
是的,這是一個C++ 11功能(可能是錯誤的)。 – ijustpostedsomethingdumb
似乎是基於循環範圍之前的C++ 11中引入的特定於MS的事情:http://stackoverflow.com/questions/9182879/which-is-preferable-for-each-in-or-for -每。 – Unimportant