【发布时间】:2014-09-04 02:42:41
【问题描述】:
此功能似乎使应用程序崩溃。我将其注释掉,然后应用程序运行良好。你们知道我做错了什么吗?
buttons 是 map,其中键的类型为 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 循环中运行。
window 是 sf::RenderWindow。
event 是 sf::Event。
if(openmenu)
{
options.showMenu(&window); //This draws to the renderwindow
if(options.buttonPress(&window, &event) == "Exit")
{
openmenu = false;
window.close();
}
}
【问题讨论】:
-
您确定
window和event指向某个有效对象吗? -
我很确定它确实如此