|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Dec 2010
Сообщений: 8
|
Я пишу отвратительный код. Что делать?
Доброго дня. Вопрос о методологии наверное.
Новичок, никак не догоню логику построения нормальных, красивых Flash-приложений. Дело в том, что объектная модель приложения (как правило) не стыкуется с моделью отображения. Из-за этого приходится хранить ссылки на объекты в глобальных переменных, объявлять публичными функции и переменные, которые должны быть защищёнными, создавать листенеры, логика работы которых не соотвествует логике взаимоотношений объектов и заниматься прочим непотребством, за которые в обычном программировании ставят к стенке. Думал понимание придёт с начальным опытом.... Не, не выходит каменный цветок... Подскажите пожалуйста - как лучше организовывать проект, если взаимоотношения объектов в сцене не соотвествует логике объектов приложения. Пример: Логика приложения:
Логика отображения:
Проблемы: 1. Планировка квартиры должна осуществлять навигацию по этажу, хотя в теории дочерние элементы не обязаны знать о своих владельцах. Приходится хранить ссылку на владельца или пользоваться пользовательскими событиями, чтобы возбудить этаж к жизни. 2. Планировки этажей повторяются - на каждом этаже выгодно использовать один и тот же графический элемент отображения. Дуплицировать тяжёлый объект смысла нет. Храню ссылку в объекте этажа, отображаю её на экране. Это создаёт сложности с квартирами внутри этажа - при переключении приходится проводить реинициализацию всего содержимого этажа в зависимости от содержимого конфига (продано\не продано). 3. При наведении мышой на квартиру отображается метка, которая может пересекаться с квартирой - мышь на метке - происходит ROLL_OUT с квартиры, если цеплять метку ребёнком к квартире, то метка начинает наследовать свойства отображения (например прозрачность), чего не хочется. И так далее и тому подобное. Понятно, что в частностях и всякими "извратами" это можно решить, но как быть в глобальном смылсе?! Какая-то система, методология, идеология в конце концов... Всё скатывается к куче кода, в котором 20% смысла и 80% учёта особенностей Помогите, не дайте пропасть. Господа, у кого опыт не одного проекта, поделитесь идеями пожалуйста!!! p. s. Переделка проектов с нуля не даёт радостного ощущения, что "всё правильно". p. p. s. примеры курил, книги прочитал, первые приложения написал, с ООП, UML и прочими матными словами знаком на практике. |
|
|||||
strange mood
|
Мне однажды доводилось решать именно такую задачу, как вы описали. В итоге вышел так себе монстрик
http://gaen.office.goodgear.ru/lulz/tigo.swf Стучите в аську, помогу чем смогу.
__________________
тонкий тролль, осеянный благодатью |
|
|||||
GAIKER, для интереса посмотрел вашу флешку - аж три РТЕ вылезло:
SecurityError: Error #2122: Нарушение изолированной среды: Loader.content: http://gaen.office.goodgear.ru/lulz/tigo.swf не может осуществить доступ к http://laganaki-s-e.ru/images/2a/c3/41/56172a93ef5e.jpg. Необходим файл политики, но, когда были загружены эти мультимедийные данные, флаг checkPolicyFile не был установлен. atflash.display::Loader/get content() atfl.containers::UILoader/get content() atblocks::PhotosBlock/photoLoaded() atflash.events::EventDispatcher/dispatchEventFunction() atflash.events::EventDispatcher/dispatchEvent() atfl.containers::UILoader/passEvent() atfl.containers::UILoader/handleComplete()
__________________
тут я |
|
|||||
КорДум, это еще не лазил дальше
Blax, тут главное отличать общее от частного, что есть объект и пр. Вот к примеру - дом - это объект - экземпляр класса Дом. В нем этажи - их количество это свойство данного объекта. При этом каждый этаж - тоже экземпляры класса, каждый знает о своем содержимом, но ему до фени, на каком он этаже. По домам и этажам помню у Мука еще было. А вообще очень хорошо помогают всплывающие пользовательские события
__________________
Ну все, теперь Забава м-о-я. Гы-гы, а корабль мой! |
|
|||||
strange mood
|
КорДум, вы правы, за такое должно быть стыдно
Эта флэшка вырвана из своего контекста и сохранена на память. Она тягает картинки с другого домена, отсюда и ошибки. Кстати, текст ошибки помог вспомнить, где лежит оригинал, который ошибок не кидает: http://laganaki-s-e.ru/flash/tigohouse.swf
__________________
тонкий тролль, осеянный благодатью |
|
|||||
Регистрация: Dec 2010
Сообщений: 8
|
Ага... :)
1. Огромное спасибо!!!
2. MVC не курил, но слышал, спасибо за наводку. 3. Пользовательские события штука юзабельная, но в данном случае не очень приятная, надо писать дестроеры объектов и слушателей, следить за подчисткой листенеров, всё это как раз то, от чего хотелось бы уйти. Получается нечто похожее на тарелку со спагетти - много связей для простого дела. 4. Выходные это +6 часов сна, посему с утра пришла мысль (ого, редкость ): что если разделить модель визуальную и модель логики приложения? То есть TanaTiX как раз описывает модель приложения, а параллельно к ней создать иерархию полностью независимую отображения с торчащими ручками, за которые можно дёргать. Или даже пойти дальше - универсальный конвейер(ы) событий (не тех, которые встроены в язык), нечто вроде общей шины для обмена событиями и данными внутри некой формации объектов. Регистрировать в нём объекты и события и использовать. Быть может это велосипед конечно... И время займёт чтобы сделать, но... Ещё раз спасибо огромное, пойду посмотреть, что за зверь MVC |
|
|||||
Регистрация: Jun 2010
Сообщений: 189
|
А как они помогают?
|
Часовой пояс GMT +4, время: 04:40. |
|
« Предыдущая тема | Следующая тема » |
Теги |
логика приложения , методология , модель отображения |
|
|