Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Еще один вопрос по архитектуре (http://www.flasher.ru/forum/showthread.php?t=145629)

Vier 14.10.2010 17:25

Еще один вопрос по архитектуре
 
Архитектура - это громко сказано, но все-таки.
Я не часто программирую на as, но каждый раз меня очень смущает получающаяся цепочка событий.
То есть, загружаем какой-то мувик. Он подгружает xml, конец загрузки xml стартует загрузку, например картинок, загрузка картинок стартует какие-то эффекты итд итп. То есть цепочка бывает довольно большая? и когда я спустя неделю возвращаюсь к проекту, довольно тяжело распутывать все эти зависимости кто кого стартует.

Я подозреваю, что есть способ как-то аккуратнее все это организовать. Интересно было бы узнать.

random13 14.10.2010 17:52

ну а что не так, все вполне последовательно, наверное чтоб понимать, может следует комментировать методы, у вас их получается кот наплакал

incvizitor 14.10.2010 17:59

Vier, вот и я, когда только начинал немного разбираться в AS3, хотел составить нейкие шаблоны для загрузки xml + картинки и т.д. Но, поверьте мне, всё уже проще простого, вот увидите через 2 месяца будете на автомате писать эти 2-3 метода за 2 минуты))

Добавлено через 1 минуту
Киньте может код для примера? Подскажем что где заоптимизировать или упростить (если есть что :) ).

Division 14.10.2010 18:33

Я решал такое создав набор классов, реализующий очередь действий.
Есть класс, реализующий загрузку XML и класс, загружающий картинки.
Код AS3:

Actions.instance.addAction(new GetXmlAction(XML_URL));
Actions.instance.addAction(new LoadImagesAction(), true);
Actions.instance.start();

Таким образом LoadImagesAction может принимать в качестве параметров загруженный XML.
Все действия выполняются последовательно, в порядке добавления.

Не сказал бы что при таком решении становится намного проще (:

random13 14.10.2010 18:40

Цитата:

Сообщение от Division (Сообщение 942729)
Я решал такое создав набор классов, реализующий очередь действий.
Есть класс, реализующий загрузку XML и класс, загружающий картинки.
Код AS3:

Actions.instance.addAction(new GetXmlAction(XML_URL));
Actions.instance.addAction(new LoadImagesAction(), true);

Таким образом LoadImagesAction может принимать в качестве параметров загруженный XML.

Не сказал бы что при таком решении становится намного проще (:

вы разнесли по классам для дальнейшего масштабирования приложения, фактически рефакторинг, выносим методы в отдельные класс по функциональности...

хотя это плодит в данном случае новые сущности

Division 14.10.2010 18:44

Не совсем рефакторинг, скорее подход такой к созданию логики приложений (: Не всегда оправдано, но местами удобно.

Vier 14.10.2010 19:09

Спасибо всем, да придется тогда лучше структурировать самому )

Пример кода вечером скину. Я уверен, что где-то я неправильно пишу.

Life_Master 14.10.2010 20:33

Division, хм... интересно, а по-подробнее о таких классах можно...

inozemcev 14.10.2010 21:43

можно класс написать который принимает ссылку на xml и диспечеризирует событие с массивом уже загруженных файлов.

expl 14.10.2010 21:48

Цитата:

Actions.instance.addAction(new GetXmlAction(XML_URL));
Надо же, у нас тоже асинхронные команды Action-нами называются
Только синглтон здесь нафиг не нужен - делаем асинхрнонную команду MacroAction,
принимающую список асинхрнонных команд - и запускаем ее, можно делать вложенные списки комманд

Там где логика ветвится - например в одном случае надо запускать одну цепочку - в другом другую - в акшене просто запускаем либо однин MacroAction, либо другой

Где цепочка строго определена (у нас только в лоадере основной swf-ки используется) - можно подобием конвеера Потапенко воспользоваться, в других случаях он слишком НЕгибок.

Но интуиция подсказывает, что обилие цепочек свидетельствует о хреново продуманной архитектуре - надо разруливать как-то по другому.
(комманда - это всетки не эквивалент реального объекта)


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

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