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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 14.04.2010, 17:16
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 71  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Нет, я имел ввиду удаление одного землянина с земли одновременно с удалением оного из базы данных.

Старый 15.04.2010, 10:36
Котяра вне форума Посмотреть профиль Отправить личное сообщение для Котяра Посетить домашнюю страницу Котяра Найти все сообщения от Котяра
  № 72  
Ответить с цитированием
Котяра
буду краток
 
Аватар для Котяра

модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
Отправить сообщение для Котяра с помощью ICQ Отправить сообщение для Котяра с помощью Skype™
Цитата:
Сообщение от Psycho Tiger Посмотреть сообщение
То зачем событию всплывать, чтобы его можно было поймать через
Код AS3:
model.addEventListener("Обновление__angleData",func);
Или я опять не о том?
Я имел ввиду именно, то.
У меня тоже древовидная структуру, только в отличии от etc - я не делал аналог DisplayObject с addChild и.т.п.
У меня просто в конструкторе модели - передаётся ссылка на парент (которую, в принципе можно и сменить потом, но мне пока ни разу не понадобилось.)

Код AS3:
 model.submodel = new Submodel(model);
// вернее чаще так
в классе модели:
submodel = new Submodel(this);
причём основную модель я пару-раз делал ребёнком контроллера - тогда все события модели доходят до контроллера всплытием.
пример : слушаем смерть землянина:
в контроллере
Код AS3:
model.addUpdateFieldListener(HumanModelField.IS_DEAD,removeHuman);
 
public function removeHuman(e:ModelEvent)
{
var deadHumanModel:HumanModel = e.target as HumanModel;
var isDead :Boolean= e.field;
if(isDead )
{
//удаляем подмодель  из модели
// удаляем вид связанный с моделью
// прочеее
}
}
т.е. тут контроллеру не надо подписывать на события модели каждого человека. он просто слушает все сообщения о смерти)
__________________
Отряд Котовскага


Последний раз редактировалось Котяра; 15.04.2010 в 11:07.
Старый 15.04.2010, 10:40
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 73  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
currentTarget? Ты уверен?

Старый 15.04.2010, 11:07
Котяра вне форума Посмотреть профиль Отправить личное сообщение для Котяра Посетить домашнюю страницу Котяра Найти все сообщения от Котяра
  № 74  
Ответить с цитированием
Котяра
буду краток
 
Аватар для Котяра

модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
Отправить сообщение для Котяра с помощью ICQ Отправить сообщение для Котяра с помощью Skype™
Цитата:
Сообщение от etc Посмотреть сообщение
currentTarget? Ты уверен?
блин, скосячил - target конечно..)
__________________
Отряд Котовскага

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

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,599
Записей в блоге: 17
Цитата:
т.е. тут контроллеру не надо подписывать на события модели каждого человека. он просто слушает все сообщения о смерти)
Ааа... всё, теперь всё стало понятней) Только вот:
Код AS3:
var isDead :Boolean= e.field;
Ты посылаешь в событии то что нужно узнать обработчику?
И вот тут:
Код AS3:
model.addUpdateFieldListener(HumanModelField.IS_DEAD,removeHuman);
покажи код метода addUpdateFieldListener, не очень ясно почему не просто addEventListener )

Старый 16.04.2010, 09:42
Котяра вне форума Посмотреть профиль Отправить личное сообщение для Котяра Посетить домашнюю страницу Котяра Найти все сообщения от Котяра
  № 76  
Ответить с цитированием
Котяра
буду краток
 
Аватар для Котяра

модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
Отправить сообщение для Котяра с помощью ICQ Отправить сообщение для Котяра с помощью Skype™
тут у меня "не очень" ООП-ный код используется..
ModelEvent имеет свойство field:*
Цитата:
addUpdateFieldListener===addChangeModelFieldListener
переименовал,а вообще можно field и не использовать.
Код AS3:
public function removeHuman(e:ModelEvent)
{
var deadHumanModel:HumanModel = e.target as HumanModel;
var isDead :Boolean= deadHumanModel.isDead;
if(isDead )
{
...
__________________
Отряд Котовскага


Последний раз редактировалось Котяра; 16.04.2010 в 09:46.
Старый 16.04.2010, 16:34
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 77  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,599
Записей в блоге: 17
Угу, мне вот второй способ кажется логичней. Лучше спросить кому надо, чем знать это всем.
А вот это зачем? Для какой цели?
Код AS3:
_modelFieldEventListenersArray.push( { event:ModelEvent.CHANGE + field, listener:listener,scope:scope } );

Старый 16.04.2010, 16:58
Котяра вне форума Посмотреть профиль Отправить личное сообщение для Котяра Посетить домашнюю страницу Котяра Найти все сообщения от Котяра
  № 78  
Ответить с цитированием
Котяра
буду краток
 
Аватар для Котяра

модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
Отправить сообщение для Котяра с помощью ICQ Отправить сообщение для Котяра с помощью Skype™
это регистрация для автоматического удаления всех листенеров
__________________
Отряд Котовскага

Старый 16.04.2010, 20:36
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 79  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,599
Записей в блоге: 17
Понял. Спасибо за разъяснения.

Старый 20.04.2010, 00:25
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 80  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Цитата:
Сообщение от Tahion Посмотреть сообщение
Да неплохая, она у меня даже есть . Но вобщемто там многие патерны не описаны существующие)
Например?

Добавлено через 5 минут
Цитата:
Сообщение от Котяра Посмотреть сообщение
У меня тоже древовидная структуру, только в отличии от etc - я не делал аналог DisplayObject с addChild и.т.п.
У меня просто в конструкторе модели - передаётся ссылка на парент (которую, в принципе можно и сменить потом, но мне пока ни разу не понадобилось.)
Стандартный GOF-паттерн Composite. Что у тебя, что у Дениса, точнее, у Блуда.

Добавлено через 11 минут
Цитата:
Сообщение от Котяра Посмотреть сообщение
причём основную модель я пару-раз делал ребёнком контроллера - тогда все события модели доходят до контроллера всплытием.
А я видел фильм с Арнольдом Шварценеггером, "Total Recall". И мне понравилась тетя с тремя сисями. Ну хоть и не по-человечески, а то и приятно ).

Добавлено через 18 минут
Цитата:
Сообщение от Котяра Посмотреть сообщение
Код AS3:
model.addUpdateFieldListener(HumanModelField.IS_DEAD,removeHuman);
Откуда такая ненависть к абстракции? В продукте лучше не упоминать о "concrete product" всуе. Здесь подойдет какой-нибудь Event.COMPLETE, вместо ХУМАНМОДЕЛ.МЕРТВ.

Я уж молчу о нововведении "addUpdateFieldListener". Чем EventDispatcher не угодил? Не следует множить сущее без необходимости.
__________________
Воспитан в TimeZero. Работаю в Mail.ru.


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

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

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


 


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


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