Статьи по разработке библиотеки GUI - PullRequest
4 голосов
/ 20 марта 2012

По сути, я не могу найти хороших статей для разработки вашего собственного графического интерфейса, , которые касаются хороших практик, базовой структуры, всплывающих событий, советов и избегания всех обычных ловушек . Меня особо не интересует, как за 5 минут создать графический интерфейс для проверки концепции, который едва работает ... и не интересуюсь созданием следующего будущего графического интерфейса.

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

В прошлом я создавал графический интерфейс, который работал очень хорошо, однако из-за некоторых неудачных дизайнерских решений и неопытности он мог сделать только очень многое (и был встроен во Flash, так что он получил много вещей бесплатно ). Поэтому я хотел бы действительно понять основы на этот раз.

Ответы [ 2 ]

1 голос
/ 20 марта 2012

Несколько советов -

1) Выберите свой стиль, с которым будет работать пользовательский интерфейс - будет ли он без сохранения состояния?Если да, как вы собираетесь обрабатывать события надлежащим образом?В случае отсутствия состояния вам, возможно, придется дважды пересмотреть свой пользовательский код пользовательского интерфейса, чтобы получать последние изменения событий со стороны пользователя.Если ваш пользовательский интерфейс хранит состояние, вам не придется заботиться об обработке событий, но он будет ограничивать ваши пользовательские интерфейсы, когда речь идет о быстрых мутациях и перестройках.

2) Не слишком полагайтесь на ООвиртуальные методы - не самая быстрая вещь в мире, поэтому используйте их с осторожностью;хотя может помочь какая-то структура на основе наследования.Остерегайтесь dynamic_cast и RTTI, если вы используете объекты;они замедлят тебя.Вместо этого установите метод enum, get_type () для каждого класса виджетов и выполните ручные проверки на возможность кастрации.

3) Попробуйте разделить внешний вид и логику / макет интерфейса.

4) Если вам нужны динамические окна, макеты и т. Д., Вам придется обрабатывать выравнивание, зажимы, положения и т. Д. И их обновления.Если вам нужны статически размещенные виджеты, это сделает это намного проще.

5) Не переусердствуйте, вы не выиграете от этого.

На самом деле нет ничего слишком специфического.сказать тебе;может, поможет какой-то конкретный вопрос?

0 голосов
/ 20 марта 2012

Посмотрите документы для существующих библиотек GUI. Это должно дать вам подробную информацию о проверенных разработках для решения проблем, с которыми вы столкнулись.

Возможно, вы захотите начать с того, с которым вы знакомы, но я думаю, что он хорошо спроектирован: AppKit . Его API - Obj-C, поэтому он потребует некоторой корректировки, если вы захотите скопировать его, но в документах представлены всевозможные подробности о том, как объекты взаимодействуют, например, обрабатывать события и то, как работают ограничения макета, которые должны быть непосредственно применимы к разработке графического интерфейса пользователя на большинстве языков.

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