2016-05-01 6 views
0

ウィンドウに描画されるすべてのスプライト、テキスト、図形を含む配列を作成したいのですがどうすればいいですか?この配列はsf :: Drawableとsf :: Transformable?sf :: Drawableとsf ::スプライト、テキスト、図形を含む変形可能な配列

+0

可能な重複:http://stackoverflow.com/questions/17910297/inheriting-from-transformable-and-drawable-in-sfml?rq=1 –

+0

あなたのコーディングの問題に対する解決策ではない、あなたがかもしれないがEntityシステム(EntityXなど)を見てみたいこれらは、この問題に対して継承を使用するときに得られる問題を解決します。 – nvoigt

答えて

1

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); 
} 
関連する問題