Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 23.03.2011, 20:30
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 1  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,600
Записей в блоге: 17
По умолчанию Мысли о ResourceManager. Как сделать его удобным?

Всем привет!
Озадачен созданием универсального ResourceManager`а.
В моём представлении, что я хочу: я хочу свободно создавать экземпляры интересующего меня класса, вне зависимости от положения этого класса в пространстве. Что я имею ввиду?
Я имею ввиду, что захотев создать класс "GFXMenu", содержащий графику из меню, я должен буду написать одну строчку. Например, такую:
Код AS3:
new resourceManager.getDefinition("GFXMenu")();
Причем это GFXMenu может находится в любом далеком swf-файле. Чтобы внести ясности, если GFXMenu вкомпиливался бы в текущую флешку, то я написал бы
Код AS3:
new (getDefinitionByName("GFXMenu") as Class)();
или вообще
Код AS3:
new GFXMenu();
Я вошел в третью стадию программиста (после abstraction freak), у меня появилась огромная любовь к конфигам в XML файлах

Вобщем, мои мысли: ResourceManager — это НЕ статичный класс, которых можно создать очень много экземпляров. (Каждому передается ApplicationDomain, или он создаёт новый). На вход подается XML подобного содержания:
Код:
<source name="mainMenu" type="swf" definitionName="GFXMainMenu" file="gfx/main.swf" preload="1" />
В будующем, в коде я могу написать
Код:
trace(new resourceManager.getDefinition("mainMenu")()); //GFXMainMenu
Если файл main.swf, содержащий GFXMainMenu ещё не загружен — он загрузится, а после пользователю выдадут ссылку на Class.
Суть в том, что тем самым я смогу обеспечивать достаточно серьезную модульность: можно будет разбивать приложение на 40 swf по 50 кб каждое, а можно будет сделать одну swf на 2 мб без вмешательств в сам код, будет правиться только входной XML файл.

Единственное нарушение этой идиллии, это необходимости перезагрузки данных. Я думаю сделать его похожим на что-то вроде этого:
Код AS3:
resourceManager.preloadResources(callback,"mainMenu","gameTable","button1","button2");
где callback вызовется в тот момент, когда все ресурсы, перечисленные далее, будут загружены и доступны. Я нарочно отказываюсь от события, т.к. одним resourceManager могут пользоваться 10 разных объектов, и придется ощущать дискомфорт, пытаясь понять, кому же адресовано это Event.COMPLETE.
Ещё в XML`е в конце стоит атрибут "preload". Если он равен 1, тогда этот ресурс должен быть загружен сразу же, после создания менеджера (это прелоадинг, по сути). Помимо этого этот менеджер будет способен грузить вообще любые ресурсы: звуки, XML, картинки и прочее, по той же схеме.
Что вы думаете об этом?

Создать новую тему   Часовой пояс GMT +4, время: 03:25.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 03:25.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.