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

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

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

Регистрация: May 2011
Сообщений: 301
Записей в блоге: 2
По умолчанию Переброска события

Есть персонаж, которому нужно получать список имеющихся у него вещей с сервера. Его класс наследуется от класса для обмена с сервером, в котором лежит реализация получения данных
Код AS3:
public class netConnected extends eventDispatcher {
   public static const LOADED:String = "loaded";
 
   public function load():void {
       addEventListener(Event.Complete, onLoadComplete);
      // отправка запроса на сервер
   }
 
   private function onLoadComplete(e:Event):void {
      dispatchEvent(new Event(netConnected.LOADED));
   }
}
public class pers extends netConnected {
   public static const INV_LOADED:String = "inventoryLoaded";
 
   public function loadInventory():void {
      addEventListener(netConnected.LOADED, onLoadComplete);
      ...
      load();
   }
 
   private function onLoadComplete(e:Event):void {
      dispatchEvent(new Event(pers.INV_LOADED));
   }
 
}
для окна показа инвентаря я ожидаю загрузки данных от персонажа
Код AS3:
import xxx.xxx.pers
...
currentPers = new pers();
currentPers.addEventListener(pers.INV_LOADED, xxx);
currentPers.loadInventory();
и собственно происходит такая передача сообщений о завершении загрузки данных - в классе pers ожидается сообщение только для того, чтобы преобразовать его в исходящее от него самого.
Или же правильно делать как-то так:
Код AS3:
import xxx.xxx.pers
import xxx.xxx.netConnected
...
currentPers = new pers();
currentPers.addEventListener(netConnected.LOADED, xxx);
currentPers.loadInventory();
но тогда не очень визуально понятно из кода, от кого ожидается сообщение. Логично, что сообщение о загрузке инвентаря ожидать от персонажа а не от абстрактного сетевого объекта netConnected.

Вопрос - как правильно? Жонглировать передачей сообщений, чтобы было визуально понятно, от кого оно приходит или же не делать этого жонглирования, но тогда не очень понятен будет код.
__________________
interplanety

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

Регистрация: Dec 2014
Сообщений: 312
Я вопрос не понял. Сообщение приходит от currentPers. Это видно. Ты же на сообщения от него подписываешься.

Код AS3:
currentPers.addEventListener...

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

Регистрация: May 2011
Сообщений: 301
Записей в блоге: 2
2 callme

сообщение приходит от currentPers это да. Просто вопрос в дискрипторе сообщения. Логично, что от персонажа при получении данных по инвентарю нужно подписаться на сообщение типа pers.INVENTORY_LOADED, а не на абстрактное netConnected.LOADED.
Т.е. разница между:
Код AS3:
currentPers.addEventListener(pers.INV_LOADED, xxx);
и
Код AS3:
currentPers.addEventListener(netConnected.LOADED, xxx);
Первое выглядит логичнее. Второе не требует перекидывания сообщений из одного в другое.
__________________
interplanety

Старый 26.08.2015, 18:53
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 4  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
Если подписыватьcя от перса, то лучше имхо, чтобы он был target, а не currentTarget. Если смущает создание еще одного события, то можно открыть доступ к лоадеру и подписываться непосредственно от него, по типу pers.dataLoader.addEventListener(...).
Меня несколько смущает сам пример, но тема не об этом

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

Регистрация: Dec 2014
Сообщений: 312
Думаю, что собака должна посылать сообщение, что она родила щенят, вместо сообщения о том, что прошло N месяцев.

Старый 26.08.2015, 18:57
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 6  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
Цитата:
Сообщение от callme Посмотреть сообщение
Думаю, что собака должна посылать сообщение, что она родила щенят, вместо сообщения о том, что прошло N месяцев.
Вопрос был о том, нужно ли слушать сообщения от щенят на фазе всплытия у собаки (когда собака была бы currentTarget), или же собака должна слушать щенят, и гавкать своё событие. Если я правильно понял.

А не, там же у него наследование...


Последний раз редактировалось udaaff; 26.08.2015 в 19:11.
Старый 26.08.2015, 19:01
Korchy вне форума Посмотреть профиль Отправить личное сообщение для Korchy Найти все сообщения от Korchy
  № 7  
Ответить с цитированием
Korchy
 
Аватар для Korchy

Регистрация: May 2011
Сообщений: 301
Записей в блоге: 2
2 udaaff
Цитата:
Сообщение от udaaff Посмотреть сообщение
Если подписыватьcя от перса, то лучше имхо, чтобы он был target, а не currentTarget.
Меня несколько смущает сам пример, но тема не об этом
Т.е. первый вариант
Код AS3:
currentPers.addEventListener(pers.INV_LOADED, xxx);
все же более правилен, я правильно понял?
А чем смущает пример, может мне вообще все надо поменять в корне ?

2 callme
Т.е. вы тоже считаете, что первый вариант лучше второго?
__________________
interplanety

Старый 26.08.2015, 19:01
callme вне форума Посмотреть профиль Отправить личное сообщение для callme Найти все сообщения от callme
  № 8  
Ответить с цитированием
callme
 
Аватар для callme

Регистрация: Dec 2014
Сообщений: 312
Цитата:
Сообщение от udaaff Посмотреть сообщение
Меня несколько смущает сам пример, но тема не об этом
Смущает то, что перс грузит инвентарь, хотя самому персу дела до инвентаря нет настолько, что он сразу прокидывает сообщения наверх?

Цитата:
Вопрос был о том, нужно ли слушать сообщения от щенят на фазе всплытия у собаки (когда собака была бы currentTarget), или же собака должна слушать щенят, и гавкать своё событие. Если я правильно понял.
Пример с щенятами оказался неудачный. В примере щенята не были использованы в качестве детей.

Старый 26.08.2015, 19:02
Korchy вне форума Посмотреть профиль Отправить личное сообщение для Korchy Найти все сообщения от Korchy
  № 9  
Ответить с цитированием
Korchy
 
Аватар для Korchy

Регистрация: May 2011
Сообщений: 301
Записей в блоге: 2
Цитата:
Сообщение от udaaff Посмотреть сообщение
Вопрос был о том, нужно ли слушать сообщения от щенят на фазе всплытия у собаки (когда собака была бы currentTarget), или же собака должна слушать щенят, и гавкать своё событие. Если я правильно понял.
Да, именно в этом был вопрос.
__________________
interplanety

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

Регистрация: Dec 2014
Сообщений: 312
Цитата:
Сообщение от Korchy Посмотреть сообщение
2 callme
Т.е. вы тоже считаете, что первый вариант лучше второго?
Да, я за первый вариант, но после сообщений udaaff не уверен, что правильно понимаю о чем идет разговор

Добавлено через 1 минуту
Цитата:
Сообщение от Korchy Посмотреть сообщение
Да, именно в этом был вопрос.
Ребят, повторю еще раз, у меня щенки использованы не в качестве детей )

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

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

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


 


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


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