SFML setFillColor 无法填充 sf::RectangleShape 二维数组的颜色
SFML setFillColor fails to fill color of sf::RectangleShape 2D array
为了学校,我接到了制作井字游戏的作业。我有一个网格布局,由 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
,它仍然显示为白色。
我想出了解决方法。出于某种原因,颜色根据这两个函数的调用顺序重置为白色:
GridLayout::GridLayout(sf::RenderWindow& window, const sf::Color& fillColor, const int& spacing):
//init
{
setFillColor(fillColor);
createGridLayout();
}
应该是:
{
createGridLayout();
setFillColor(fillColor);
}
为了学校,我接到了制作井字游戏的作业。我有一个网格布局,由 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
,它仍然显示为白色。
我想出了解决方法。出于某种原因,颜色根据这两个函数的调用顺序重置为白色:
GridLayout::GridLayout(sf::RenderWindow& window, const sf::Color& fillColor, const int& spacing):
//init
{
setFillColor(fillColor);
createGridLayout();
}
应该是:
{
createGridLayout();
setFillColor(fillColor);
}