SFML и C++ Уроки \ Разработка игр › Форумы › SFML Graphics › Проблемма при возвращении в меню
В этой теме 5 ответов, 3 участника, последнее обновление Darkos 7 года/лет, 1 месяц назад.
-
АвторСообщения
-
Доброго времени суток. Возникла проблема: когда игра завершается и возвращается меню, то не отрисовуются спрайты кнопок. Получается пустое окно, но при нажатии на место где должна быть кнопка все работает так как будто она там есть. Как решить эту проблему?
Ну наверное проблема с текстурами кнопок. Надо дебажить.
наверное проблема с текстурами кнопок
При запуске программы показывается меню и там все нормально работает, а после отработки функции игры и возвращении в это же меню уже не работает. Вот код функции:
C++12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667bool menu(RenderWindow &window,int &numLevel){Texture menuTexture1,menuTexture2,menuTexture3,aboutTexture,menuBackground;menuTexture1.loadFromFile("images/start.png");menuTexture2.loadFromFile("images/credits.png");menuTexture3.loadFromFile("images/exit.png");menuBackground.loadFromFile("images/background.png");Sprite menu1(menuTexture1),menu2(menuTexture2),menu3(menuTexture3),about(aboutTexture),menuBg(menuBackground);bool isMenu = true;int menuNum = 0;menu1.setPosition(100,30);menu2.setPosition(100,90);menu3.setPosition(100,150);menuBg.setPosition(0,0);while(isMenu){menu1.setColor(Color::White);menu2.setColor(Color::White);menu3.setColor(Color::White);menuNum = 0;window.clear(Color(129,181,221));if(IntRect(100,30,300,50).contains(Mouse::getPosition(window))){menu1.setColor(Color::Blue);menuNum = 1;}if(IntRect(100,90,300,50).contains(Mouse::getPosition(window))){menu2.setColor(Color::Blue);menuNum = 2;}if(IntRect(100,150,300,50).contains(Mouse::getPosition(window))){menu3.setColor(Color::Blue);menuNum = 3;}if(Mouse::isButtonPressed(Mouse::Left)){switch(menuNum){case 1:startGame(window,numLevel);break;case 2:break;case 3:window.close();isMenu = false;return false;}}window.draw(menuBg);window.draw(menu1);window.draw(menu2);window.draw(menu3);window.display();}}Вот так меню выглядит до вызова startGame();
https://yadi.sk/i/qb-Io1J3uHmhr
А вот так после:
Выяснил, что проблема в этой строке:
C++1window.setView(view);Если ее за комментировать, то все работает нормально. Но без этого не будет двигаться карта. Что с этим делать?
Вы использовали одну камеру в разных сценах. Она у вас просто уезжала из позиции кнопок)). window.setView(window.getDefaultView()); Перед циклом .
Спасибо, разобрался.
-
АвторСообщения
Для ответа в этой теме необходимо авторизоваться.