Динамическое рисование окна интерфейса во Flash? - PullRequest
1 голос
/ 30 июня 2011

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

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

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

Ответы [ 2 ]

1 голос
/ 30 июня 2011

ИМО, это зависит от 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, или просто установить.visible свойство).
  • Когда вы хотите закрыть диалоговое окно, обязательно вызовите метод hide (), который сначала скрывается, а затем очищает все, что было создано (удаление слушателей и т. д.), чтобыв следующий раз, когда он вызывается, он может нарисовать себя свежим.

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

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

0 голосов
/ 30 июня 2011

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

http://pushbuttonengine.com/

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

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

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

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

...