Динамический интерфейс рисования окон во Flash?

Не был уверен, что этот вопрос здесь, но я попробую. Так что я собираюсь перенести свой проект от директора | Shockwave Player (если вы когда-либо слышали об этом) во Flash Player по многим причинам, и хотя я думаю, как лучше начать, у меня возник вопрос, который действительно заставил меня задуматься. К точке.

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

Теперь я должен выяснить, стоит ли писать такой код и во Flash, в отличие от простого создания всех окон, помещения их в библиотеку и добавления на сцену, когда они запрашиваются. Как вы думаете? Стоит ли писать такую ​​реализацию?

2 ответа

Решение

IMO, это зависит от 1) Насколько вы удобны с API рисования / графическим классом Flash, и 2) Насколько гибким должно быть каждое окно / диалог.

Если проще просто собрать их вместе как статические объекты - и если им не обязательно нужна гибкость для значительного изменения размеров / стиля (можете ли вы рассчитывать, с одной стороны, сколько раз им нужно было изменить с тех пор, как это было сделано изначально? в Director много лет назад?), это, очевидно, легче сделать, чем потратить время / энергию на их динамическое воссоздание, особенно если вы не очень хорошо знакомы с API рисования Flash.

Тем не менее, многое может быть достигнуто динамически с помощью API рисования Flash, поэтому, если у вас есть время / интерес, я, конечно, рекомендую покопаться и сделать это "правильным" способом, если вы хотите ознакомиться с API рисования.

Мой метод для такого рода вещей обычно выглядит так:

  • Создайте отдельный класс, который расширяет Sprite/MovieClip; что-то вроде "Dialog.as".
  • Создайте общедоступные методы init(), show() и hide() и закрытый метод build().
  • init () вызывается только один раз при инициализации вашего приложения и принимает некоторые глобальные параметры для внутреннего хранения (отступы, цвета и т. д.).
  • show () принимает аргумент либо текста (String), либо даже Sprite/MovieClip - что бы вы ни хотели показать в этом диалоговом окне. Когда вызывается (когда вы хотите вызвать окно), он использует это - плюс все параметры init, которые были изначально переданы во время init() - чтобы нарисовать себя, а затем показать себя (анимацию свойства.alpha или просто установить.видимая собственность).
  • Если вы хотите закрыть диалоговое окно, обязательно вызовите метод hide(), который сначала скрывается, а затем очищает все, что было создано (удаление слушателей и т. Д.), Чтобы в следующий раз при его вызове он мог рисовать себя свежим,

Также может иметь смысл передать в этот объект ссылку на рабочую область (в исходном вызове init ()), чтобы он мог центрироваться и масштабироваться соответствующим образом на сцене, а также добавить саму Child в верхнюю часть списка отображения, чтобы что это всегда превыше всего.

Надеюсь, это поможет.

Если 2D, вы можете проверить это:

http://pushbuttonengine.com/

Если это 3D, вы можете начать здесь:

http://alternativaplatform.com/en/alternativa3d/

Я могу предложить вам также Unity3D, но это за пределами вспышки

Надеюсь, поможет

Другие вопросы по тегам