|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
|
Мысли о ResourceManager. Как сделать его удобным?
Всем привет!
Озадачен созданием универсального ResourceManager`а. В моём представлении, что я хочу: я хочу свободно создавать экземпляры интересующего меня класса, вне зависимости от положения этого класса в пространстве. Что я имею ввиду? Я имею ввиду, что захотев создать класс "GFXMenu", содержащий графику из меню, я должен буду написать одну строчку. Например, такую: Причем это GFXMenu может находится в любом далеком swf-файле. Чтобы внести ясности, если GFXMenu вкомпиливался бы в текущую флешку, то я написал бы или вообще Я вошел в третью стадию программиста (после abstraction freak), у меня появилась огромная любовь к конфигам в XML файлах Вобщем, мои мысли: ResourceManager — это НЕ статичный класс, которых можно создать очень много экземпляров. (Каждому передается ApplicationDomain, или он создаёт новый). На вход подается XML подобного содержания: <source name="mainMenu" type="swf" definitionName="GFXMainMenu" file="gfx/main.swf" preload="1" /> Если файл main.swf, содержащий GFXMainMenu ещё не загружен — он загрузится, а после пользователю выдадут ссылку на Class. Суть в том, что тем самым я смогу обеспечивать достаточно серьезную модульность: можно будет разбивать приложение на 40 swf по 50 кб каждое, а можно будет сделать одну swf на 2 мб без вмешательств в сам код, будет правиться только входной XML файл. Единственное нарушение этой идиллии, это необходимости перезагрузки данных. Я думаю сделать его похожим на что-то вроде этого: где callback вызовется в тот момент, когда все ресурсы, перечисленные далее, будут загружены и доступны. Я нарочно отказываюсь от события, т.к. одним resourceManager могут пользоваться 10 разных объектов, и придется ощущать дискомфорт, пытаясь понять, кому же адресовано это Event.COMPLETE. Ещё в XML`е в конце стоит атрибут "preload". Если он равен 1, тогда этот ресурс должен быть загружен сразу же, после создания менеджера (это прелоадинг, по сути). Помимо этого этот менеджер будет способен грузить вообще любые ресурсы: звуки, XML, картинки и прочее, по той же схеме. Что вы думаете об этом?
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
Я думаю, что колбеки не тру, и надо писать свой евент (с полем alias или полями alias & type)
Насчет xml - не гибко, парсер xml должен висеть отдельно и формировать из него очередь По поводу статичности и аппДоменов - выглядит неплохо. Ну и плюс ко всему - я бы сделал несколько классов "потоков загрузки" с общим интерфейсом и работал бы через этот интерфейс
__________________
...вселенская грусть |
|
|||||
блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
|
Цитата:
Цитата:
Цитата:
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
Цитата:
(просто можно затрахаться - проверял - записывая какая картинка откуда пришла вручную) Цитата:
Последний раз редактировалось expl; 23.03.2011 в 21:10. |
|
|||||
Цитата:
Цитата:
Цитата:
xml -> URLLoader swf, jpg, png -> Loader something -> ILoader
__________________
...вселенская грусть |
|
|||||
блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
|
Цитата:
Цитата:
Цитата:
Цитата:
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
Цитата:
Цитата:
Про 40 листенеров - не понял
__________________
...вселенская грусть |
|
|||||
блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
|
Цитата:
Цитата:
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
Цитата:
Цитата:
Мы ведь обычно знаем, что: - все начинающееся на UI лежит в ui.swf - все начинающееся на Animation лежит в animation.swf Делаем себе сугубо проектно-зависимый класс, в котором хардкодим наше соглашение ResourceLocation { private var _mediaPath:String; public static init(mediaPath:String) { _mediaPath = mediaPath; } public static function getAnimationURL():String { return _mediaPath + "/" + "animation.swf"; } public static function getUIURL():String { return _mediaPath + "/" + "ui.swf"; } } public static function getSwfURL(name:String):String { if (name.indexOf("Animation") == 0) { return _mediaPath + "/" + "animation.swf"; } if (name.indexOf("UI") == 0) { return _mediaPath + "/" + "ui.swf"; } return null; } При первом подходе можно возвращать не url, а сразу ресурс, типизированный соответственно загружаемым данным (у которого потом вызывать load() и на который подписывать колбеки) |
|
|||||
Цитата:
__________________
...вселенская грусть |
Часовой пояс GMT +4, время: 12:49. |
|
« Предыдущая тема | Следующая тема » |
|
|