由于 Sprite,C++ SFML 中的白盒问题

a white box problem in C++ SFML due to Sprite

你好,我试图为我的游戏绘制一个简单的正方形,但它绘制的是一个白色正方形而不是我的图像。这是我的代码...

paddle.hpp

class Paddle
{
public:
    Paddle(){}
    Paddle(sf::RectangleShape myPaddle);

    void Draw(sf::RenderWindow& window);
    void setImage();

private:

    sf::Texture m_texBackground;
    sf::Sprite m_imgBackground;
    sf::RectangleShape m_shape;
};

paddle.cpp

Paddle::Paddle(sf::RectangleShape myPaddle) :m_shape(myPaddle)
{
    [b][font=times new roman]setImage();[/font][/b]
}
void Paddle::setImage()
{
    if (!m_texBackground.loadFromFile("img/bats/bat_black.png")) {
        std::cout << "bat_black.png didnt open" << std::endl;
    }
    else {
        m_imgBackground.setPosition(m_shape.x, m_shape.y);
        m_imgBackground.setTexture(m_texBackground);

        //Some scale stuffs
    }
}

void Paddle::Draw(sf::RenderWindow& window)
{

    window.draw(m_shape);
    window.draw(m_imgBackground);
}

game.hpp

    class Game
    {
    public:
        Game();
        void startGame(); //My main while loop here
                //some other functions...
    private:
        sf::RenderWindow m_window;
        Paddle m_paddle;

    };

game.cpp

Game::Game()
{
    sf::RectangleShape myPaddle(sf::Vector2f(100, 20));
    myPaddle.setPosition(sf::Vector2f(m_windowWidth/2.0f, m_windowHeight-4.0f * raketim.getSize().y));
    myPaddle.setFillColor(sf::Color::Green);
    m_paddle =Raket(myPaddle);
    //m_paddle.setImage();
}
void Game::startGame()
{
    while (m_window.isOpen())
    {
    
            //some other while loops event stuffs functions etc here
        m_paddle.Draw(m_window);
        //some other functions here
    }
}

所以我要告诉你我的问题是什么。 当我尝试从 Game 构造函数内部的 Game.cpp 调用“setImage”函数时,一切都很好,它正在工作.. 我的意思是绘制 Sprite 是的......但是当我尝试从 Paddle 构造函数内部的 Paddle.cpp 调用“setImage”时,它正在绘制一个白色方块......
实际上对于这个桨没关系它至少在画.. 但是我为我的游戏墙添加了很多图像。它在大循环中.. 我不能总是从游戏构造函数中调用它。那么我如何从我的基础 class 中调用它呢?我检查了白盒问题,但我已经在 Paddle.hpp 中定义了我的纹理和精灵。我的意思是它不会在小范围内消失。那么问题是什么?我是 SFML 的新手..你能帮帮我吗?

我想我至少解决了这个问题。问题是无论我做什么,我都无法阻止某些实例因为结束它们的相关范围而丢失。花了一些时间才看到,因为我没有根据 class..但是我在我的 Game.cpp 中定义了一个桨。所以问题是一样的。他们称这是一个白方块问题..我让 SFML 的文档在这里你可以从那里检查。希望对你有帮助SFML the white square problem