SFML在鼠标冲突测试时崩溃进程终止255

时间:2014-09-04 02:42:41

标签: c++ sfml

此功能似乎会使应用程序崩溃。我评论了它然后应用程序运行正常。你们看到我做错了吗?

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();
            }
        }

1 个答案:

答案 0 :(得分:1)

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