【问题标题】:SFML crashing on mouse collision test Process terminated 255SFML 在鼠标碰撞测试中崩溃进程终止 255
【发布时间】:2014-09-04 02:42:41
【问题描述】:

此功能似乎使应用程序崩溃。我将其注释掉,然后应用程序运行良好。你们知道我做错了什么吗?

buttonsmap,其中键的类型为 string,值的类型为 sf::sprite 我让它在while 循环中运行,当它被告知菜单打开时运行

std::string Menu::buttonPress(sf::RenderWindow* window, sf::Event* event)
{
    while(window->pollEvent(*event))
    {
        if(event->type == sf::Event::EventType::MouseButtonPressed)
        {
            sf::Vector2i mousepos = sf::Mouse::getPosition(*window);

            for(auto it: buttons)
            {
                sf::Rect<float> sprite;
                sprite = it.second.getGlobalBounds();
                if(sprite.contains(mousepos.x,mousepos.y))
                {
                    return it.first;
                }
            }
        }
    }
}

编辑 这个function 在一个while 循环中运行。 windowsf::RenderWindoweventsf::Event

if(openmenu)
        {
            options.showMenu(&window); //This draws to the renderwindow

            if(options.buttonPress(&window, &event) == "Exit")
            {
                openmenu = false;
                window.close();
            }
        }

【问题讨论】:

  • 您确定windowevent 指向某个有效对象吗?
  • 我很确定它确实如此

标签: c++ sfml


【解决方案1】:

如果事件队列中没有MouseButtonPressed 事件(我希望大多数迭代都是这种情况),或者如果有,鼠标位置不在您的一个按钮内,您的函数不返回值,从而导致未定义的行为。

【讨论】:

  • 啊,我没有这样做,因为我只是在测试它。哈哈我是个白痴。非常感谢!
猜你喜欢
  • 2020-11-15
  • 2017-07-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-01
  • 2023-04-03
  • 1970-01-01
  • 2013-08-22
相关资源
最近更新 更多