Лучшая практика: шаблон проектирования для навигации по экрану 2D HUD - PullRequest
4 голосов
/ 23 августа 2010

Если у вас есть приложение с графическим интерфейсом пользователя, полностью работающее с 2D-чертежом, что должно быть наилучшим решением для обработки того, что рисовать и где касаться?

Пример для лучшего понимания:
Яигра с картой.На этой карте я могу строить дома и прочее.
У меня также есть информационная панель, которую можно расширить.На расширенной панели я рисую некоторую информацию об игре, а также предлагает интерфейс для изменения различных значений.Если происходит касание, я должен проверить, расширена ли информационная панель или нет, чтобы определить, хочу ли я что-то изменить на карте или что-то на панели.

Это делается с помощью шаблона состояния, но яесть некоторые сомнения, если это правильный, потому что я думаю, что это может быть немного сложным из-за возможных «подсостояний».

Таким образом, в основном вопрос: является ли State Pattern (из GoF) лучшей практикой для обработкичистый графический интерфейс?

1 Ответ

2 голосов
/ 24 августа 2010

Обычно это работает так, что пользовательский интерфейс представляет собой дерево объектов Control.Каждый элемент управления имеет некоторую ограничивающую рамку и потенциально несколько дочерних элементов управления, которые плавают над ним.Когда происходит щелчок, дерево идет сверху вниз (что означает детей перед родителями и братьев и сестер по порядку).Для каждого элемента управления вы видите, пересекает ли точка свою ограничивающую рамку.Если это так, дайте элементу управления возможность обрабатывать щелчок (то есть какой-нибудь виртуальный OnClick метод).Если это так, остановите обработку, этот щелчок сделан.В противном случае продолжайте идти, пока не доберетесь до элемента управления, который его обрабатывает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...