![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Jun 2009
Сообщений: 5
|
Доброй всем сети.
Итак к сути: Создаю свою библиотеку (swc) там есть пока что ровно один класс. Класс реализует подгрузку xml файла, через URLLoader, в конструктор передается путь до файла который запихивается в проперти класса. Далее в проекте подключаю эту библиотеку создаю экземпляр класса передаю в конструктор путь, и... ничего не происходит. Точнее: написал листнер для события Event.COMPLETE и он его на первый взгляд не обрабатывает(ну так нам говорит геттер из mxml когда я его запускаю), но если внутри моего класса делать Alert.show то он нормально показывает что листнер обрабатывается. В чём может быть проблема? оО |
|
|||||
|
Регистрация: Jan 2009
Сообщений: 1,651
|
так не скажешь. Ставьте трейсы через каждый шаг, смотрите, где происходит стоп или запускайте дебаг.
А что происходить-то должно? |
|
|||||
|
Регистрация: Jun 2009
Сообщений: 5
|
он должен возвращать мне xml-файл мой
![]() а трейс не помагает, дебаг даже не ругается Добавлено через 10 часов 1 минуту Выходит примерно так: <?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" initialize="init()">
<mx:Script>
<![CDATA[
import mx.controls.Alert;
import ru.chidori.utils.ConfigLoader;
[Bindable]
public var cfg : ConfigLoader;
private function init():void
{
cfg = new ConfigLoader("data/config.xml");
Alert.show(cfg.message);
}
]]>
</mx:Script>
</mx:Application>
/** * @author : chidori * **/ package ru.chidori.utils { import flash.events.*; import flash.net.*; public class ConfigLoader { private var _configFileLocation:String; public function get configFileLocation():String { return _configFileLocation; } public function set configFileLocation(value:String):void { _configFileLocation = value } private var _message:String; public function get message():String { return _message; } public function set message(value:String):void { _message = value; } /** * * Конструктор * **/ public function ConfigLoader(cfgFileLocation:String) { configFileLocation = cfgFileLocation; loadFile(); } private function loadFile():void { var urlRequest:URLRequest; var urlLoader:URLLoader; urlRequest = new URLRequest(configFileLocation); urlLoader = new URLLoader(); configureListeners(urlLoader); urlRequest.method = URLRequestMethod.POST; try { urlLoader.load(urlRequest); } catch(error:Error) { this.message = "Не могу загрузить: "+configFileLocation; } } /** * * Метод для конфигурации листнеров для объекта URLLoader * **/ private function configureListeners(dispatcher:IEventDispatcher):void { // добавляем листнеры для объекта URLLoader dispatcher.addEventListener(Event.COMPLETE, urlLoaderCompleteHandler); dispatcher.addEventListener(Event.OPEN, urlLoaderOpenHandler); dispatcher.addEventListener(ProgressEvent.PROGRESS, urlLoaderProgressHandler); dispatcher.addEventListener(SecurityErrorEvent.SECURITY_ERROR, urlLoaderSecurityErrorHandler); dispatcher.addEventListener(HTTPStatusEvent.HTTP_STATUS, urlLoaderHttpStatusHandler); dispatcher.addEventListener(IOErrorEvent.IO_ERROR, urlLoaderIOErrorHandler); } private function urlLoaderCompleteHandler(event:Event):void { this.message = "Загрузил! :)"; } private function urlLoaderOpenHandler(event:Event):void { // } private function urlLoaderProgressHandler(event:ProgressEvent):void { // } private function urlLoaderSecurityErrorHandler(event:SecurityErrorEvent):void { // } private function urlLoaderHttpStatusHandler(event:HTTPStatusEvent):void { // } private function urlLoaderIOErrorHandler(event:IOErrorEvent):void { // } } } Хотя если вызывать такой алерт прям из листнера, а не проперти присваивать, то выдает он правильно(внутри класса получается), такое ощущение что область видимости бредит. Последний раз редактировалось chidori; 04.08.2009 в 09:28. |
|
|||||
|
Регистрация: Jul 2008
Сообщений: 107
|
А по-моему, ошибка здесь:
xml еще не загрузился, а Вы уже message тянете... Последний раз редактировалось Lou; 04.08.2009 в 13:22. |
|
|||||
|
Lou +1
ConfigLoader должен диспатчить событие о успешной загрузке данных, на которое вы подпишитесь в основном проекте. И вот в обработчике этого события уже и обращайтесь к cfg.message
__________________
coming soon... |
|
|||||
|
Регистрация: Jun 2009
Сообщений: 5
|
оке, спс, попробую. о результатах отпишусь
![]() |
|
|||||
|
Регистрация: May 2009
Сообщений: 80
|
Хмм...не отписался, но подсказали правильно)))
|
![]() |
![]() |
Часовой пояс GMT +4, время: 06:10. |
|
|
« Предыдущая тема | Следующая тема » |
|
|