0
ウィンドウに描画されるすべてのスプライト、テキスト、図形を含む配列を作成したいのですがどうすればいいですか?この配列はsf :: Drawableとsf :: Transformable?sf :: Drawableとsf ::スプライト、テキスト、図形を含む変形可能な配列
ウィンドウに描画されるすべてのスプライト、テキスト、図形を含む配列を作成したいのですがどうすればいいですか?この配列はsf :: Drawableとsf :: Transformable?sf :: Drawableとsf ::スプライト、テキスト、図形を含む変形可能な配列
Drawable
とTransformable
の両方を継承するクラスを作成する必要があります。次に、そのクラスの配列を作成することができます。
class Obj : public sf::Drawable, public sf::Transformable
{
// class code
}
// somewhere in code...
std::array<Obj, ARRAY_SIZE> arr;
あなたは正しくDrawable
とTransformable
を実装していることを確認します。
ここに公式文書へのリンクがあります。これらのクラスを実装する
一つの方法は、の線に沿って何かのようになります。
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);
}
可能な重複:http://stackoverflow.com/questions/17910297/inheriting-from-transformable-and-drawable-in-sfml?rq=1 –
あなたのコーディングの問題に対する解決策ではない、あなたがかもしれないがEntityシステム(EntityXなど)を見てみたいこれらは、この問題に対して継承を使用するときに得られる問題を解決します。 – nvoigt