使用SFML使自定义类型可绘制

3

我最近开始使用SFML,为了学习体验,我决定用它制作一个乒乓球克隆版。我定义了一个名为Ball的类,该类使用SFML绘制一个RectangleShape。然而,当我尝试使用window.draw()函数将此自定义类型绘制到屏幕上时,我会因为Ball不是一个sf::Drawable而遇到错误。由于我是SFML的新手,希望能得到帮助。

1个回答

5
要使用window.draw(object),对象的类必须继承drawable接口并实现抽象的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);
}

谢谢,我以为它与继承Drawable类有关,只是不确定如何去做。 - Terrance8D
1
@Terrance8D 如果有疑问,看看API - SFML的许多优点之一是出色的文档。希望你的项目顺利! - Conduit

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接