![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
|
|||||
|
Регистрация: Aug 2008
Адрес: 53 E
Сообщений: 60
|
Столкнулся со следующей проблемой:
нужно записать данные на диск пользователя, делаю это с помощью метода flush(), затем проеряю константы, возвращаемые методом, создаю обработчик исключения, а также, если в настройках FlashPlayer'а у пользователя прописан меньший объем байт для хранения данных, регистрирую приемник событий для NetStatusEvent. Отслеживаю информацию из свойства code, событийного объекта info, для того, чтобы проверить разрешил ли пользователь увеличить объем для хранения информации. А проблема заключается в том, что диспетчеризация события NetStatusEvent.NET_STATUS, по непонятной мне причине не происходит! Вот код: package { import flash.display.*; import flash.net.*; import flash.events.*; public class SharedExample extends Sprite { public function SharedExample() { super(); var sharedObject:SharedObject=SharedObject.getLocal("SomeObject"); sharedObject.data.string="Property string has some value"; try { var writeResult:String=sharedObject.flush(10000); if(writeResult==SharedObjectFlushStatus.PENDING) { trace("PENDING"); sharedObject.addEventListener(NetStatusEvent.NET_STATUS, netStatusListener); } else if(writeResult==SharedObjectFlushStatus.FLUSHED) { trace("FLUSHED"); } } catch(error:Error) { trace("ERROR"); } } private function netStatusListener(e:NetStatusEvent):void { if(e.info.code=="SharedObject.Flush.Success") { trace("SUCCESS"); } else if(e.info.code=="SharedObject.Flush.Failed") { trace("FAILED"); } } } } В ходе эксперимента, также заметил интересную особенность, а именно: var sharedObject:SharedObject=SharedObject.getLocal("SomeObject"); sharedObject.data.string="Property string has some value"; try { var writeResult:String=sharedObject.flush(10000); if (writeResult==SharedObjectFlushStatus.PENDING) { trace("PENDING"); sharedObject.addEventListener(NetStatusEvent.NET_STATUS, netStatusListener); } else if (writeResult==SharedObjectFlushStatus.FLUSHED) { trace("FLUSHED"); } } catch (error:Error) { trace("ERROR"); } function netStatusListener(e:NetStatusEvent):void { if (e.info.code=="SharedObject.Flush.Success") { trace("SUCCESS"); } else if (e.info.code=="SharedObject.Flush.Failed") { trace("FAILED"); } } Смотрим пример ниже, чуток модифицирован createShared(); function createShared():void { var sharedObject:SharedObject=SharedObject.getLocal("SomeObject"); sharedObject.data.string="Property string has some value"; try { var writeResult:String=sharedObject.flush(10000); if (writeResult==SharedObjectFlushStatus.PENDING) { trace("PENDING"); sharedObject.addEventListener(NetStatusEvent.NET_STATUS, netStatusListener); } else if (writeResult==SharedObjectFlushStatus.FLUSHED) { trace("FLUSHED"); } } catch (error:Error) { trace("ERROR"); } } function netStatusListener(e:NetStatusEvent):void { if (e.info.code=="SharedObject.Flush.Success") { trace("SUCCESS"); } else if (e.info.code=="SharedObject.Flush.Failed") { trace("FAILED"); } } ![]() Какие будут мысли по существу приведенных выше доводов? Буду весьма благодарен за дельные и конструктивные советы. Добавлено через 52 минуты Вопрос снимается. Видимо, после выполнения метода в котором объявляется sharedObject ссылка на него из программы удаляется, и деактивируется зарегистрированный приемник для событий NetStatusEvent, проблем нет, когда ссылка на SharedObject хранится в переменной экземпляра класса.
__________________
04.08 1516 23:42 Последний раз редактировалось Мечтатель; 26.10.2009 в 20:03. |
![]() |
Часовой пояс GMT +4, время: 15:36. |
|
|
« Предыдущая тема | Следующая тема » |
|
|