使用SFML制作自定义类型

时间:2015-12-24 23:31:58

标签: c++ sfml

我最近选择使用SFML,并且我决定使用它作为一种学习经验。我已经定义了一个名为Ball的类,它使用SFML绘制RectangleShape。当我尝试使用window.draw()函数将此自定义类型绘制到屏幕时,我收到错误,因为Ball不是sf::Drawable。我很感激这方面的帮助,是SFML的新手。

1 个答案:

答案 0 :(得分:5)

要使用window.draw(object)对象的类必须继承drawable interface并实现抽象的sf :: Drawable :: draw函数。

听起来像sf :: RectangleShape是Ball的成员。 SFML知道如何渲染形状,但不知道Ball本身。 Ball的课堂声明应如下所示:

class Ball : public sf::Drawable //,...
{
    //...
    private:
    virtual void draw(sf::RenderTarget& target, sf::RenderStates states) const;
    //...
};

绘制应该像这样实现:

void Ball::draw(sf::RenderTarget& target, sf::RenderStates states) const
{
    //assuming m_shape is the sf::RectangleShape
    target.draw(m_shape, states);
}