2011-06-29 3 views
1

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

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

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

+0

Какова миссия приложения (игра, backoffice, webpage)? –

+0

@ Xavi, это MMO игра. – Rihards

ответ

1

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

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

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

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

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

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

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

+0

Ох, большое спасибо за этот ответ - я думал, что это останется без ответа. Подумайте, какой путь я должен выбрать ночью. Еще раз спасибо за хорошие моменты, которые вы предоставили! :) – Rihards

+0

Отлично, если вы хотите, чтобы какие-либо конкретные примеры не стеснялись спрашивать, и я попытаюсь бросить вам небольшой класс, чтобы вы начали работать. – TimKlimowicz

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