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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 17.12.2010, 17:40
Blax вне форума Посмотреть профиль Отправить личное сообщение для Blax Найти все сообщения от Blax
  № 1  
Ответить с цитированием
Blax

Регистрация: Dec 2010
Сообщений: 8
По умолчанию Я пишу отвратительный код. Что делать?

Доброго дня. Вопрос о методологии наверное.

Новичок, никак не догоню логику построения нормальных, красивых Flash-приложений.

Дело в том, что объектная модель приложения (как правило) не стыкуется с моделью отображения.
Из-за этого приходится хранить ссылки на объекты в глобальных переменных, объявлять публичными функции и переменные, которые должны быть защищёнными, создавать листенеры, логика работы которых не соотвествует логике взаимоотношений объектов и заниматься прочим непотребством, за которые в обычном программировании ставят к стенке.

Думал понимание придёт с начальным опытом.... Не, не выходит каменный цветок...

Подскажите пожалуйста - как лучше организовывать проект, если взаимоотношения объектов в сцене не соотвествует логике объектов приложения.
Пример:
Логика приложения:
  • Дом
    -
  • этаж
    --
  • квартира
    ---
  • планировка
  • Метка с информацией о интересуемом объекте

Логика отображения:
  • Дом и селектор этажей
  • Этаж, содержащий квартиры
  • Планировка квартиры

Проблемы:
1. Планировка квартиры должна осуществлять навигацию по этажу, хотя в теории дочерние элементы не обязаны знать о своих владельцах. Приходится хранить ссылку на владельца или пользоваться пользовательскими событиями, чтобы возбудить этаж к жизни.

2. Планировки этажей повторяются - на каждом этаже выгодно использовать один и тот же графический элемент отображения. Дуплицировать тяжёлый объект смысла нет. Храню ссылку в объекте этажа, отображаю её на экране. Это создаёт сложности с квартирами внутри этажа - при переключении приходится проводить реинициализацию всего содержимого этажа в зависимости от содержимого конфига (продано\не продано).

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

И так далее и тому подобное. Понятно, что в частностях и всякими "извратами" это можно решить, но как быть в глобальном смылсе?!

Какая-то система, методология, идеология в конце концов...

Всё скатывается к куче кода, в котором 20% смысла и 80% учёта особенностей национальной рыбалки модели отображения FLASH.

Помогите, не дайте пропасть.
Господа, у кого опыт не одного проекта, поделитесь идеями пожалуйста!!!


p. s.
Переделка проектов с нуля не даёт радостного ощущения, что "всё правильно".

p. p. s. примеры курил, книги прочитал, первые приложения написал, с ООП, UML и прочими матными словами знаком на практике.

Старый 17.12.2010, 17:50
Bgg вне форума Посмотреть профиль Отправить личное сообщение для Bgg Найти все сообщения от Bgg
  № 2  
Ответить с цитированием
Bgg
 
Аватар для Bgg

Регистрация: Jan 2009
Адрес: Петерсбург
Сообщений: 1,882
А про MVC тоже читали?

Старый 17.12.2010, 17:55
Gaen вне форума Посмотреть профиль Отправить личное сообщение для Gaen Найти все сообщения от Gaen
  № 3  
Ответить с цитированием
Gaen
strange mood
 
Аватар для Gaen

модератор форума
Регистрация: Jul 2004
Адрес: Питер
Сообщений: 1,653
Записей в блоге: 1
Отправить сообщение для Gaen с помощью ICQ Отправить сообщение для Gaen с помощью Skype™
Мне однажды доводилось решать именно такую задачу, как вы описали. В итоге вышел так себе монстрик
http://gaen.office.goodgear.ru/lulz/tigo.swf
Стучите в аську, помогу чем смогу.
__________________
тонкий тролль, осеянный благодатью

Старый 17.12.2010, 18:08
КорДум вне форума Посмотреть профиль Отправить личное сообщение для КорДум Найти все сообщения от КорДум
  № 4  
Ответить с цитированием
КорДум
 
Аватар для КорДум

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
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()
__________________
тут я

Старый 17.12.2010, 18:12
TanaTiX вне форума Посмотреть профиль Отправить личное сообщение для TanaTiX Найти все сообщения от TanaTiX
  № 5  
Ответить с цитированием
TanaTiX
 
Аватар для TanaTiX

блогер
Регистрация: Feb 2008
Сообщений: 1,453
Записей в блоге: 4
КорДум, это еще не лазил дальше
Blax, тут главное отличать общее от частного, что есть объект и пр.
Вот к примеру - дом - это объект - экземпляр класса Дом.
В нем этажи - их количество это свойство данного объекта. При этом каждый этаж - тоже экземпляры класса, каждый знает о своем содержимом, но ему до фени, на каком он этаже.
По домам и этажам помню у Мука еще было.
А вообще очень хорошо помогают всплывающие пользовательские события
__________________
Ну все, теперь Забава м-о-я.
Гы-гы, а корабль мой!

Старый 17.12.2010, 18:12
Gaen вне форума Посмотреть профиль Отправить личное сообщение для Gaen Найти все сообщения от Gaen
  № 6  
Ответить с цитированием
Gaen
strange mood
 
Аватар для Gaen

модератор форума
Регистрация: Jul 2004
Адрес: Питер
Сообщений: 1,653
Записей в блоге: 1
Отправить сообщение для Gaen с помощью ICQ Отправить сообщение для Gaen с помощью Skype™
КорДум, вы правы, за такое должно быть стыдно
Эта флэшка вырвана из своего контекста и сохранена на память. Она тягает картинки с другого домена, отсюда и ошибки.
Кстати, текст ошибки помог вспомнить, где лежит оригинал, который ошибок не кидает: http://laganaki-s-e.ru/flash/tigohouse.swf
__________________
тонкий тролль, осеянный благодатью

Старый 17.12.2010, 18:19
КорДум вне форума Посмотреть профиль Отправить личное сообщение для КорДум Найти все сообщения от КорДум
  № 7  
Ответить с цитированием
КорДум
 
Аватар для КорДум

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
Так лучше (:
Жаль, что текст выделить нельзя, почему убрали выделение?
Blax, По ссылке, что вам дал Bgg первым постом идет PsychoTiger, загляните к нему в блог, он писал подробные и занимательные статейки про MVC.
__________________
тут я

Старый 17.12.2010, 18:21
Gaen вне форума Посмотреть профиль Отправить личное сообщение для Gaen Найти все сообщения от Gaen
  № 8  
Ответить с цитированием
Gaen
strange mood
 
Аватар для Gaen

модератор форума
Регистрация: Jul 2004
Адрес: Питер
Сообщений: 1,653
Записей в блоге: 1
Отправить сообщение для Gaen с помощью ICQ Отправить сообщение для Gaen с помощью Skype™
КорДум, насяльника сказал, я сделал)
__________________
тонкий тролль, осеянный благодатью

Старый 20.12.2010, 10:43
Blax вне форума Посмотреть профиль Отправить личное сообщение для Blax Найти все сообщения от Blax
  № 9  
Ответить с цитированием
Blax

Регистрация: Dec 2010
Сообщений: 8
Thumbs up Ага... :)

1. Огромное спасибо!!!

2. MVC не курил, но слышал, спасибо за наводку.

3. Пользовательские события штука юзабельная, но в данном случае не очень приятная, надо писать дестроеры объектов и слушателей, следить за подчисткой листенеров, всё это как раз то, от чего хотелось бы уйти. Получается нечто похожее на тарелку со спагетти - много связей для простого дела.

4. Выходные это +6 часов сна, посему с утра пришла мысль (ого, редкость ): что если разделить модель визуальную и модель логики приложения? То есть TanaTiX как раз описывает модель приложения, а параллельно к ней создать иерархию полностью независимую отображения с торчащими ручками, за которые можно дёргать.
Или даже пойти дальше - универсальный конвейер(ы) событий (не тех, которые встроены в язык), нечто вроде общей шины для обмена событиями и данными внутри некой формации объектов. Регистрировать в нём объекты и события и использовать. Быть может это велосипед конечно... И время займёт чтобы сделать, но...

Ещё раз спасибо огромное, пойду посмотреть, что за зверь MVC

Старый 20.12.2010, 16:10
Nemez вне форума Посмотреть профиль Отправить личное сообщение для Nemez Найти все сообщения от Nemez
  № 10  
Ответить с цитированием
Nemez
 
Аватар для Nemez

Регистрация: Jun 2010
Сообщений: 189
Цитата:
Сообщение от TanaTiX Посмотреть сообщение
А вообще очень хорошо помогают всплывающие пользовательские события
А как они помогают?

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

Теги
логика приложения , методология , модель отображения

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

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


 


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


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