Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > Flex

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 03.08.2009, 21:55
chidori вне форума Посмотреть профиль Отправить личное сообщение для chidori Найти все сообщения от chidori
  № 1  
Ответить с цитированием
chidori

Регистрация: Jun 2009
Сообщений: 5
По умолчанию Проблема при использовании своей написанной библиотеки подключаемой к Flex проекту

Доброй всем сети.
Итак к сути:
Создаю свою библиотеку (swc) там есть пока что ровно один класс.
Класс реализует подгрузку xml файла, через URLLoader, в конструктор передается путь до файла который запихивается в проперти класса.
Далее в проекте подключаю эту библиотеку создаю экземпляр класса передаю в конструктор путь, и... ничего не происходит.

Точнее: написал листнер для события Event.COMPLETE и он его на первый взгляд не обрабатывает(ну так нам говорит геттер из mxml когда я его запускаю), но если внутри моего класса делать Alert.show то он нормально показывает что листнер обрабатывается.
В чём может быть проблема? оО

Старый 03.08.2009, 22:06
iflamberg вне форума Посмотреть профиль Отправить личное сообщение для iflamberg Найти все сообщения от iflamberg
  № 2  
Ответить с цитированием
iflamberg
 
Аватар для iflamberg

Регистрация: Jan 2009
Сообщений: 1,651
так не скажешь. Ставьте трейсы через каждый шаг, смотрите, где происходит стоп или запускайте дебаг.
А что происходить-то должно?

Старый 03.08.2009, 23:22
chidori вне форума Посмотреть профиль Отправить личное сообщение для chidori Найти все сообщения от chidori
  № 3  
Ответить с цитированием
chidori

Регистрация: 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>
и библиотечный класс:
Код AS3:
/**
 * @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
		{
//						
		}								 		 		
 
	}
}
При запуске выдает пустой Alert.
Хотя если вызывать такой алерт прям из листнера, а не проперти присваивать, то выдает он правильно(внутри класса получается), такое ощущение что область видимости бредит.


Последний раз редактировалось chidori; 04.08.2009 в 09:28.
Старый 04.08.2009, 12:08
Lou вне форума Посмотреть профиль Отправить личное сообщение для Lou Найти все сообщения от Lou
  № 4  
Ответить с цитированием
Lou
 
Аватар для Lou

Регистрация: Jul 2008
Сообщений: 107
А по-моему, ошибка здесь:
Код AS3:
cfg = new ConfigLoader("data/config.xml");
Alert.show(cfg.message);
xml еще не загрузился, а Вы уже message тянете...


Последний раз редактировалось Lou; 04.08.2009 в 13:22.
Старый 04.08.2009, 16:06
AlexStukoff вне форума Посмотреть профиль Отправить личное сообщение для AlexStukoff Посетить домашнюю страницу AlexStukoff Найти все сообщения от AlexStukoff
  № 5  
Ответить с цитированием
AlexStukoff
 
Аватар для AlexStukoff

Регистрация: Dec 2007
Адрес: Stavropol
Сообщений: 65
Отправить сообщение для AlexStukoff с помощью ICQ
Lou +1

ConfigLoader должен диспатчить событие о успешной загрузке данных, на которое вы подпишитесь в основном проекте. И вот в обработчике этого события уже и обращайтесь к cfg.message
__________________
coming soon...

Старый 04.08.2009, 16:52
chidori вне форума Посмотреть профиль Отправить личное сообщение для chidori Найти все сообщения от chidori
  № 6  
Ответить с цитированием
chidori

Регистрация: Jun 2009
Сообщений: 5
оке, спс, попробую. о результатах отпишусь

Старый 01.09.2009, 13:18
Deidara вне форума Посмотреть профиль Отправить личное сообщение для Deidara Найти все сообщения от Deidara
  № 7  
Ответить с цитированием
Deidara

Регистрация: May 2009
Сообщений: 80
Хмм...не отписался, но подсказали правильно)))

Создать новую тему Ответ Часовой пояс GMT +4, время: 06:10.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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