gpt4 book ai didi

c++ - sf::Drawable 和 sf::Transformable 包含 Sprite 、文本和形状的数组

转载 作者:行者123 更新时间:2023-11-28 05:41:40 26 4
gpt4 key购买 nike

我想创建一个数组,其中包含将绘制到窗口上的所有 Sprite 、文本和形状,我的问题是如何使这个数组同时具有 sf::Drawable 和 sf::Transformable?

最佳答案

您需要创建一个继承 DrawableTransformable 的类。然后您就可以创建该类的数组。

class Obj : public sf::Drawable, public sf::Transformable
{
// class code
}

// somewhere in code...
std::array<Obj, ARRAY_SIZE> arr;

确保您正确实现了 DrawableTransformable


这是官方文档的链接。

Transformable & Drawable


实现这些类的一种方法是:

class Obj : public sf::Drawable, public sf::Transformable
{
public:

sf::Sprite sprite;
sf::Texture texture;

// implement sf::Drawable
virtual void draw(sf::RenderTarget& target, sf::RenderStates states) const
{
target.draw(sprite, states); // draw sprite
}

// implement sf::Transformable
virtual void SetPosition(const MyVector& v) const
{
sprite.setPosition(v.x(), v.y());
}
}

然后在您的代码中您可以直接绘制和转换该类。

// somewhere in code
// arr = std::array<Obj, ARRAY_SIZE>
for (auto s : arr) {
window.draw(s);
}

关于c++ - sf::Drawable 和 sf::Transformable 包含 Sprite 、文本和形状的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36966034/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com