Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flex (http://www.flasher.ru/forum/forumdisplay.php?f=84)
-   -   [вопрос] DispatchEvent из static метода (http://www.flasher.ru/forum/showthread.php?t=162085)

Silicium 29.07.2011 23:30

[вопрос] DispatchEvent из static метода
 
Всем доброго здравия! Вопрос в следующем: есть класс, со стат методами. В нем есть так же статическое поле _data - экземпляр некоторого класса, расширяющего EventDispatcher. Класс в целом реализует взаимодействие с пхп сервером, в поле _data загружается инфа. Запрос на обновление данных может передаваться от клиента к серверу когда угодно, но если данные на сервере не обновлялись в ответ приходит null. В противном случае приходят данные, и записываются в _data. При этом я хочу, чтобы диспатчилось событие, подписка на которое реализуется в основном коде приложения. Сделал все довольно просто, но листенер не вызывается. и ругни нигде нет, ни при компиляции, ни при выполнении. В чем может быть проблема?

Добавлено через 9 минут
Обошелся без диспатчера.

alatar 30.07.2011 00:59

События может отправлять экземпляр класса, а не сам класс.

Silicium 30.07.2011 23:59

А разве поле класса, хоть и с атрибутом статик, но создоваемое вызовом конструктора, не является экземпляром класса?

Добавлено через 3 минуты
В общем, было примерно так:
Код AS3:

private static var _data:DataClass;
 
public static function init():void
{
  ...
  _data = new DataClass();
}
 
private function sendReq():void
{
  ...
  var loader:URLLoader = new URLLoader();
  loader.addEventListener(Event.COMPLETE, onLoad);
}
 
private static function onLoad(e:Event):void
{
  ...
  _data.dispatchEvent(new DataEvent("DataEvent.DATA_LOADED"));
}
 
public static function addEventListener(type:String, listener:Function):void
{
  ...
  _data.addEventListener(type, listener);
}


alatar 31.07.2011 00:16

Нет, не является. У вас там просто хранится ссылка на экземпляр класса.

Silicium 01.08.2011 14:22

ну я это и имел ввиду. но диспатчить ивенты через нее поидее можно...

alatar 01.08.2011 14:49

Диспатчить можно, но сама конструкция со статиками... Если уж вам так нравится доступ отовсюду, сделайте синглтоном.

Silicium 01.08.2011 16:01

Вот я как раз недавно читал местный блог о синглтоне, и пытался представить ситуацию, где бы он мог пригодиться - не получилось))). Но, как я уже говорил, обошелся без событий.


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

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