Просмотр полной версии : [вопрос] DispatchEvent из static метода
Silicium
29.07.2011, 23:30
Всем доброго здравия! Вопрос в следующем: есть класс, со стат методами. В нем есть так же статическое поле _data - экземпляр некоторого класса, расширяющего EventDispatcher. Класс в целом реализует взаимодействие с пхп сервером, в поле _data загружается инфа. Запрос на обновление данных может передаваться от клиента к серверу когда угодно, но если данные на сервере не обновлялись в ответ приходит null. В противном случае приходят данные, и записываются в _data. При этом я хочу, чтобы диспатчилось событие, подписка на которое реализуется в основном коде приложения. Сделал все довольно просто, но листенер не вызывается. и ругни нигде нет, ни при компиляции, ни при выполнении. В чем может быть проблема?
Добавлено через 9 минут
Обошелся без диспатчера.
События может отправлять экземпляр класса, а не сам класс.
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);
}
Нет, не является. У вас там просто хранится ссылка на экземпляр класса.
Silicium
01.08.2011, 14:22
ну я это и имел ввиду. но диспатчить ивенты через нее поидее можно...
Диспатчить можно, но сама конструкция со статиками... Если уж вам так нравится доступ отовсюду, сделайте синглтоном (http://gskinner.com/blog/archives/2006/07/as3_singletons.html).
Silicium
01.08.2011, 16:01
Вот я как раз недавно читал местный блог о синглтоне, и пытался представить ситуацию, где бы он мог пригодиться - не получилось))). Но, как я уже говорил, обошелся без событий.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.