【问题标题】:Making custom types drawable with SFML使用 SFML 使自定义类型可绘制
【发布时间】:2016-03-31 06:04:02
【问题描述】:

我最近开始使用 SFML,我决定作为学习经验,我会使用它制作一个 pong 克隆。我已经定义了一个名为Ball 的类,它使用SFML 来绘制RectangleShape。但是,当我尝试使用 window.draw() 函数将这种自定义类型绘制到屏幕上时,我收到错误,因为 Ball 不是 sf::Drawable。作为 SFML 的新手,我将不胜感激。

【问题讨论】:

    标签: c++ sfml


    【解决方案1】:

    要使用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;
        //...
    };
    

    而draw应该是这样实现的:

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

    【讨论】:

    • 谢谢,我认为这与继承 Drawable 类有关,我只是不知道如何去做。
    • @Terrance8D 如有疑问,请查看 API - SFML 的众多目标之一就是出色的文档。希望你的项目顺利!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-02
    • 1970-01-01
    • 2020-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多