Динамический интерфейс рисования окон во 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, вы можете проверить это:
Если это 3D, вы можете начать здесь:
http://alternativaplatform.com/en/alternativa3d/
Я могу предложить вам также Unity3D, но это за пределами вспышки
Надеюсь, поможет