【发布时间】:2018-06-14 20:38:00
【问题描述】:
正如标题所说,我想将一个纹理对象应用于多个 Sprite。以下是创建 10 个 Creature 对象的主要函数:
int main() {
...
// creates a Creature vector and fills it with 10 Creature objects
std::vector<Creature> creatureList;
for (int i = 0; i < 10; i++) {
creatureList.emplace_back();
}
...
}
以下是Creature头文件:
class Creature {
public:
Creature();
...
private:
...
sf::Texture bodyTexture;
sf::Sprite body;
};
最后,以下是源文件:
Creature::Creature() {
...
bodyTexture.loadFromFile("square.png");
...
body.setColor(sf::Color(rgbDistribution(mt), rgbDistribution(mt),
rgbDistribution(mt)));
body.setTexture(bodyTexture);
}
这段代码的问题在于它只为最近创建的 Creature 对象提供实际纹理,这让我相信每次调用 body.setTexture(bodyTexture); 时它都会不断改变 bodyTexture 的“占有”。
我在这里缺少什么?我尝试过使用各种指针和其他东西,但无济于事。
【问题讨论】:
标签: pointers constructor sfml