c++ - Sprite 不动

标签 c++ sfml

我是编程新手,因为我发现学习起来更容易,所以我一直在玩 C++ 和 SFML。我试图让 Sprite 移动,但出于某种原因,我做不到。我已经尝试了我发现的一切,但没有运气。任何人都知道为什么这不起作用?顺便说一下,我使用的是 Visual Studio 2012 Express 和 SFML 2.1。

int main()
{
    sf::RenderWindow window(sf::VideoMode(1000, 800), "Project");
    window.setFramerateLimit(30);
    glEnable(GL_TEXTURE_2D);
    window.clear(sf::Color::White);
    window.display();
    sf::Texture charMain;
    if (!charMain.loadFromFile("Images/playerFrontSprite.png"))
    {
        return 1;
    }
    sf::Sprite charaMain;
    charaMain.setPosition(500.f , 500.f);
    charaMain.setTexture(charMain);
    window.draw(charaMain);
    window.display();
    sf::Font cavefont;
    sf::Font::Font(cavefont);
    if (!cavefont.loadFromFile("Cave-Story.ttf"))
        return 1;
        while (window.isOpen())
        {
            sf::Event playerAction;
            while (window.pollEvent(playerAction))
            {
                switch(playerAction.type)
                {
                case sf::Event::Closed:
                    window.close();
                    break;
                case sf::Event::KeyPressed:
                    std::cout << "sf::Event::KeyPressed" << std::endl;
                    switch(playerAction.key.code)
                    {
                    case sf::Keyboard::W:
                        charaMain.move(0 , 1);
                        break;
                    case sf::Keyboard::A:
                        charaMain.move(-1 , 0);
                        break;
                    case sf::Keyboard::S:
                        charaMain.move(0 , -1);
                        break;
                    case sf::Keyboard::D:
                        charaMain.move(1 , 0);
                        break;
                    }
                    break;
                }
            }
            }
}

最佳答案

您的问题是您正在移动对象,但没有在屏幕上的新位置绘制它。您的绘图代码在主循环之外,因此在您移动 Sprite 后它永远不会被调用,因此您永远看不到效果。

您基本上需要在 while (window. isOpen()) 循环,在事件处理循环之外。

关于c++ - Sprite 不动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25536440/

相关文章:

c++ - 使函数返回具有不同属性的东西

c++ - std::shared_ptr 是如何多态的?

c++ - 如果不知道数组的大小,如何将函数数组作为参数传递

c++ - 'malloc' 和 'new' 是如何工作的?它们有何不同(实现方面)?

c++ - 尝试在 C++ SFML 代码块中设置帧率时出错

c++ - 使用堆栈检查正确的HTML标记的C++程序

c++ - 如何在 C++ 中正确组织和实现 SFML 音频?

c++ - 在 SFML 中对对象进行分组的最佳方法是什么?

c++ - 在 SFML (C++) 中启动一个新窗口

c++ - 接收音频 block 的异步 TCP 服务器出现访问冲突错误