PDA

Просмотр полной версии : [вопрос] DispatchEvent из static метода


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

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

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

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

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

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
Диспатчить можно, но сама конструкция со статиками... Если уж вам так нравится доступ отовсюду, сделайте синглтоном (http://gskinner.com/blog/archives/2006/07/as3_singletons.html).

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