【问题标题】:(SFML 2.4.2) How to apply one Texture to multiple Sprites(SFML 2.4.2) 如何将一个纹理应用于多个 Sprite
【发布时间】: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


    【解决方案1】:

    找到答案:我只需将纹理作为参考传递,这样每次调用body.setTexture(bodyTexture);时纹理的“所有者”都不会改变

    【讨论】:

      猜你喜欢
      • 2015-07-20
      • 2019-10-19
      • 2020-07-21
      • 2021-02-01
      • 1970-01-01
      • 2017-06-03
      • 1970-01-01
      • 2021-05-14
      • 1970-01-01
      相关资源
      最近更新 更多