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

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

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

блогер
Регистрация: Jan 2011
Сообщений: 1,162
Записей в блоге: 4
Attention Чудеса асинхронного исполнения.

Кратко опишу последовательность событий:

1. Вьюер инициализирует контролл, сохраняет на него ссылку.
2. Контролл инициализирует модель, отдает ссылку на модель во
вьюер.
3. Вьюер принимает ссылку вешает слушателя на событие готовности
данных в модели.
4. Конролл инициализирует датапровайдер отвечающий за доставку
данных.
5. Контролл сообщает модели данные извлеченные датапровайдером
из sharedobject.
6. Модель извлекает данные из полученного ByteArray и, по сути,
инициализирует объект VO.
7. Модель поручает статику подготовить два вида данных
(распарсить строку, а также подготовить html-строку для
текст.поля).
8. Модель диспатчит готовность данных для вьюера.
9. Вьюер готовит на основе полученных данных шесть, относительно
непростых виз.объектов, при инициализации последних, в них,
уже, готовятся другие виз.объекты, что требует некоторых доп.
вычислений.
10. Вьюер пытается сообщить контроллу ссылку на себя... не совсем так,
Вьюер обращается к контроллу для инициализации прослушивания его эл-тов.

В результате последнего возникает ошибка: Контролл равен null (!!!)



Как может быть такое?


Последний раз редактировалось fish_r; 23.12.2011 в 01:51.
Старый 23.12.2011, 00:18
PainKiller вне форума Посмотреть профиль Отправить личное сообщение для PainKiller Найти все сообщения от PainKiller
  № 2  
Ответить с цитированием
PainKiller
 
Аватар для PainKiller

блогер
Регистрация: Sep 2011
Адрес: Москва
Сообщений: 533
Записей в блоге: 4
Как то слишком абстрактно без кода... Но так сходу вопросы возникают - Может где то в процессе контролл обнуляется? И что в дебаггере пошагово по контроллу видно, именно в момент возникновения ошибки?

Старый 23.12.2011, 00:30
fish_r вне форума Посмотреть профиль Отправить личное сообщение для fish_r Посетить домашнюю страницу fish_r Найти все сообщения от fish_r
  № 3  
Ответить с цитированием
fish_r
 
Аватар для fish_r

блогер
Регистрация: Jan 2011
Сообщений: 1,162
Записей в блоге: 4
Это было бы очень простым ответом )

Нет, проблема решается следующим образом: после шага №2 контролл устанавливает слушатель на вхождение в следующий кадр. И тогда всё нормально исполняется.
Да и трейсы показывают последовательное исполнение, не параллельное.

Значит, контролл нигде не обнуляется. В чем же может быть дело?

ЗЫ. Код и трейсы могу привести, просто его много получается, на словах проще. Если никто сходу не сможет ответить приведу и код.

Старый 23.12.2011, 02:53
ShockWave512 вне форума Посмотреть профиль Отправить личное сообщение для ShockWave512 Посетить домашнюю страницу ShockWave512 Найти все сообщения от ShockWave512
  № 4  
Ответить с цитированием
ShockWave512

Регистрация: Dec 2007
Адрес: NA
Сообщений: 741
Отправить сообщение для ShockWave512 с помощью Skype™
ccылку на контрол во вьювере сделать сеттером и последить кто его менят в нул

Старый 23.12.2011, 03:26
Zebestov вне форума Посмотреть профиль Отправить личное сообщение для Zebestov Посетить домашнюю страницу Zebestov Найти все сообщения от Zebestov
  № 5  
Ответить с цитированием
Zebestov
Lorem ipsum
 
Аватар для Zebestov

модератор форума
Регистрация: May 2001
Адрес: Одесса
Сообщений: 4,869
Записей в блоге: 4
Цитата:
Сообщение от fish_r Посмотреть сообщение
1. Вьюер инициализирует контролл, сохраняет на него ссылку.
Опа! Почему входной точкой является view, а не controller?
__________________
Поймай яблоко 2!

Старый 23.12.2011, 03:29
Aquahawk вне форума Посмотреть профиль Отправить личное сообщение для Aquahawk Посетить домашнюю страницу Aquahawk Найти все сообщения от Aquahawk
  № 6  
Ответить с цитированием
Aquahawk
 
Аватар для Aquahawk

Регистрация: Nov 2010
Адрес: Москва
Сообщений: 915
Записей в блоге: 4
Отправить сообщение для Aquahawk с помощью ICQ Отправить сообщение для Aquahawk с помощью Skype™
Цитата:
Да и трейсы показывают последовательное исполнение, не параллельное.
Во флеше нет параллельного исполнения. Когда вы диспатчите событие, прямо в этот момент и отработают все слушатели, как будто их прямо тут и вызвали. Думаю косяк у вас в этом.
__________________
:)

Старый 23.12.2011, 03:30
fish_r вне форума Посмотреть профиль Отправить личное сообщение для fish_r Посетить домашнюю страницу fish_r Найти все сообщения от fish_r
  № 7  
Ответить с цитированием
fish_r
 
Аватар для fish_r

блогер
Регистрация: Jan 2011
Сообщений: 1,162
Записей в блоге: 4
ссылка на контролл есть только у одного класса - у гл.класса приложения, да и тому она нафиг не нужна - почикал (код не рефакторенный) , однако это ничего не изменило, трейсы показывают последовательное исполнение:

Код:
1324592402281. DragTheWord, init,  : 
1324592402296. DTW_model, loadDataCompleteHandler,  : 
1324592402312. DragTheWord, addStartDataHandler,  : 
1324592402328. DragTheWord, init,  : 
1324592402328. DragTheWord, init,  :
Здесь числовое значение - хронометраж, строки указывают на метод в котором расположен данный трейс,
в частности строка "DragTheWord, init," указывает на метод init() класса DragTheWord().
Видно, что первая и последние две строки относятся к одному и тому же методу, первая - до инициализации контролла, последние здесь же , в этом же методе, но уже после инициализации.

Строка инициализации выглядит так:

Код AS3:
  new DTW_controll( this );
Как видно она ничего не возвращает и вернуть ничего не может, и программе незачем ждать результатов вызова, но тем не менее дальнейшее исполнение происходит только после инициализации прочих объектов...

Добавлено через 2 минуты
Цитата:
Сообщение от Zebestov Посмотреть сообщение
Опа! Почему входной точкой является view, а не controller?
Потому, что у меня контролл - тупой кусок кабеля, правда почти, он все же готовит информацию для переваривания моделью. Значит тупой кусок кабеля с контроллером )

Старый 23.12.2011, 03:38
Zebestov вне форума Посмотреть профиль Отправить личное сообщение для Zebestov Посетить домашнюю страницу Zebestov Найти все сообщения от Zebestov
  № 8  
Ответить с цитированием
Zebestov
Lorem ipsum
 
Аватар для Zebestov

модератор форума
Регистрация: May 2001
Адрес: Одесса
Сообщений: 4,869
Записей в блоге: 4
Цитата:
Сообщение от fish_r Посмотреть сообщение
Потому, что у меня контролл - тупой кусок кабеля, правда почти, он все же готовит информацию для переваривания моделью. Значит тупой кусок кабеля с контроллером )
Я было подумал, что речь об MVC.
__________________
Поймай яблоко 2!

Старый 23.12.2011, 03:40
Aquahawk вне форума Посмотреть профиль Отправить личное сообщение для Aquahawk Посетить домашнюю страницу Aquahawk Найти все сообщения от Aquahawk
  № 9  
Ответить с цитированием
Aquahawk
 
Аватар для Aquahawk

Регистрация: Nov 2010
Адрес: Москва
Сообщений: 915
Записей в блоге: 4
Отправить сообщение для Aquahawk с помощью ICQ Отправить сообщение для Aquahawk с помощью Skype™
собирите минимальный приме, прям интересно посмотрить
__________________
:)

Старый 23.12.2011, 03:43
fish_r вне форума Посмотреть профиль Отправить личное сообщение для fish_r Посетить домашнюю страницу fish_r Найти все сообщения от fish_r
  № 10  
Ответить с цитированием
fish_r
 
Аватар для fish_r

блогер
Регистрация: Jan 2011
Сообщений: 1,162
Записей в блоге: 4
Да, речь про MVC и есть. Только так как я его понимаю. Главный класс - по сути просто фасад. Однако из за специфики флеша, он и вьюер. Оправдаться могу только тем, что они ничего и не делает, кроме старта приложения и создания подвьюх на старте.

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

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

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


 


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


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