2012-03-19 3 views
4

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

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

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

ответ

1

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

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

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

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

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

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

На самом деле нет ничего особенного, что я вам скажу; возможно, какой-то конкретный вопрос помог бы?

+0

Спасибо! Это будет реализовано в Lua, и идея состоит в том, чтобы сохранить его, немедленный режим кажется отличным для «плоских» и более простых графических интерфейсов. То, что я ищу, в основном просто, какими должны быть основы? Как правильно управлять событиями (щелчки мыши, фокус ввода и т. Д.), Рекомендуемые методы базового класса, способы работы с детьми и позиционирование (например, ярлыки на кнопке) и тому подобное. – Andreas

+0

Я думаю, что поиск кода пользовательского интерфейса в игровом движке Cube 2 может оказаться полезным.Это не совсем хороший код, но он реализует довольно элегантные пользовательские интерфейсы без гражданства с минимальным количеством кода, в основном без OO, просто используя прокси-сервер и двойную переоценку (это мало что можно сделать, когда вы станете апатридом). Безгражданство - отличная идея. Но переоценка и перестроение пользовательских интерфейсов для каждого кадра не в полной мере соответствуют большой производительности, поэтому для сложных структур пользовательского интерфейса вам лучше работать с государственной системой. – q66

0

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

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

+0

Да, я смотрю на некоторые существующие библиотеки графического интерфейса, но на самом деле, если вы уже не знакомы с ними, это довольно сложная задача, чтобы действительно понять, как они работают на таком низком уровне. В настоящее время я смотрю на GWEN, который является тем, чем я занимаюсь, но все же нелегко понять, что происходит. – Andreas

Смежные вопросы