SFML и C++ Уроки \ Разработка игр › Форумы › SFML Graphics › Проблемы с нажатием спрайта
В этой теме 4 ответа, 3 участника, последнее обновление FortT 8 года/лет, 8 мес. назад.
-
АвторСообщения
-
Здравствуйте. У меня есть меню в игре. Нажимая на спрайт мышью “играть” происходит очистка экрана и игрок должен выбрать вид игры, который он хочет. После нажатия на один из спрайтов “вид” происходит опять очистка и игрок начинает собирать пятнашки. Вся проблема состоит в том, что координаты спрайта меню “играть” наполовину совпадают с координатами одного из спрайтов вида меню. Что происходит: если нажимать на правую часть спрайта “играть” то игрок сразу начинает играть – он не попадает в выбор вида потому что компьютер рисует спрайты и автоматически понимает что мышь нажата, и она находится на спрайте “вид” – то есть вид выбирается сразу. Если нажать на левую часть спрайта “играть” то все в порядке и мы попадаем в меню вида. Пыталась использовать флаги(что бы программа понимала что сейчас меню и можно делать лишь это, а если нажат спрайт играть только тогда активируется меню вида и можно выбирать), но они никак не помогают. На изображении показано что должен показываться вид игры. Но из за нажатия клавиши на место с такими координатами нажимается и первый спрайт меню вида. Скину код если будет нужно. Спасибо
Вложения:
You must be logged in to view attached files.Покажите нам код.
Извиняюсь. Проблема решена. Билась над ней 2 недели, не выдержала и написала, и вот все таки получилось)
Как же решена?)
Без дополнительных флагов на каждое новое состояние ничего бы не вышло. Пришлось ставить флаг на то что мышь нажата и она именно в этом состоянии(в классе где идет swith из спрайтов меню). Тогда этот флаг передавался в условие в главной программе где прописано: если этот флаг true и мышь отпущена то мы сбрасываем флаг состояния в котором были, делаем true флаг нового состояния. Ранее пыталась просто сбросить флаг либо задавала условие что мышь отпущено, но это не работает без глобальных флагов.
-
АвторСообщения
Для ответа в этой теме необходимо авторизоваться.