SFML setFillColor无法填充sf :: RectangleShape 2D数组的颜色

时间:2018-12-11 20:41:22

标签: c++ sfml

在学校,我得到了做井字游戏的任务。我有一个由9个正方形(顶部为3,顶部为3,底部为3)组成的网格布局。通过这种方式获得网格。但是设置颜色无效。在我的构造函数GridLayout中,我要求一个sf::Color,如下所示:

GridLayout(sf::RenderWindow& window, const sf::Color& fillColor, const int& spacing):
// some init
{
    setFillColor(fillColor);
}

此外,在我的私有属性中,我有一个网格,如下所示:

sf::RectangleShape[3][3] rectangleShapes;

要设置所有9种形状的填充颜色,我创建了以下功能:

void GridLayout::setFillColor(const sf::Color& fillColor) {
    for (auto& row : rectangleShapes) 
        for (auto& rect : row) 
            rect.setFillColor(fillColor);


}

但是,如下图所示,即使通过了sf::Color::Black,它仍然显示为白色。

enter image description here

1 个答案:

答案 0 :(得分:0)

我想出了解决方法。由于某些原因,颜色会根据这两个函数的调用顺序重置为白色:

GridLayout::GridLayout(sf::RenderWindow& window, const sf::Color& fillColor, const int& spacing):
//init
{       
    setFillColor(fillColor);
    createGridLayout();
}

应该是:

{       
    createGridLayout();
    setFillColor(fillColor);

}