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

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

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

Регистрация: Aug 2007
Адрес: \BLR\MENSK
Сообщений: 62
Отправить сообщение для FMensk с помощью ICQ
По умолчанию HTTPService & URLLoader

Задача: надо загрузить xml в DataGrid и при этом отследить Загрузку файла (возможно использование больших документов)

для этого хорошо подходит HTTPService
элементарно переводит xml в ArrayCollection
Но невыходит отслеживать Загрузку xml документа

при помощи URLLoader можно отслеживать какая часть документа загрузилась... в тоже время каким либо легким способом перевести xml в ArrayCollection не удалось.

Может есть альтернативный метод?? или я что нибудь не так понимаю.
__________________
ОСТОРОЖНО!!!
Нестандартное мышление

Старый 05.10.2008, 14:03
russia.roman вне форума Посмотреть профиль Отправить личное сообщение для russia.roman Найти все сообщения от russia.roman
  № 2  
Ответить с цитированием
russia.roman

Регистрация: Aug 2008
Сообщений: 6
Код в студию

Старый 05.10.2008, 17:21
FMensk вне форума Посмотреть профиль Отправить личное сообщение для FMensk Найти все сообщения от FMensk
  № 3  
Ответить с цитированием
FMensk
 
Аватар для FMensk

Регистрация: Aug 2007
Адрес: \BLR\MENSK
Сообщений: 62
Отправить сообщение для FMensk с помощью ICQ
HTTP Service:

Код:
<?xml version="1.0" encoding="utf-8"?>
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml"
                  width="1000" height="500">
 <mx:Script>
  <![CDATA[
	import mx.binding.utils.ChangeWatcher;
    	import mx.binding.utils.BindingUtils;
	private var nameBinding:ChangeWatcher;

	import fclass.fload.FHTTPService;
	public var Fhttp:FHTTPService = new FHTTPService();

	public function Init_Razdel():void {
	    this.nameBinding = BindingUtils.bindProperty(DG_Razdel, 
				"dataProvider", this.Fhttp, "FRezult_text");
	    this.Fhttp.HTTP_BEST();
	}
   ]]>
 </mx:Script>

 <mx:DataGrid 	id="DG_Razdel" width="600" height="350" >
	<mx:columns>
		<mx:DataGridColumn dataField="number" headerText="№"/>
		<mx:DataGridColumn dataField="name" headerText="Раздел"/>
	</mx:columns>
 </mx:DataGrid>

</mx:Canvas>


fclass/fload/FHTTPService.as;
Код:
package fclass.fload
{
  import mx.collections.ArrayCollection;
  import mx.rpc.events.ResultEvent;
  import mx.rpc.http.HTTPService;
	
  public class FHTTPService
  {
	private var httpRequest:HTTPService = new HTTPService();
	[Bindable] public var FRezult_text:ArrayCollection;

    public function HTTP_BEST():void {
  	httpRequest.url="menu.xml?n="+Math.random();
	httpRequest.send();
	httpRequest.addEventListener(ResultEvent.RESULT,getResult);
    }
  		
    private function getResult(event:ResultEvent):void {
  	var Arr:ArrayCollection = new ArrayCollection();
  	Arr = event.result.razdel.blok;
	Arr.refresh();

        //Имеем В результате ArrayCollection который подвязан под дата грид 
	FRezult_text = Arr;
    }
  }
}


Пример с URLLoader...

Код:
package fclass.fload
{
	import flash.display.Sprite;
	import flash.events.*;
	import flash.net.*;
		
	public class FMURLLoader extends Sprite {
		
	[Bindable] public var Info_forME:String;
    	[Bindable] public var FProgress_text:String;
    	[Bindable] public var FRezult_text:String;

	public function MURLLoader():void {
            var loader:URLLoader = new URLLoader();
            configureListeners(loader);
            var request:URLRequest = new URLRequest("menu.xml?n="+Math.random());
            
            try {
                loader.load(request);
                Info_forME = "Грузим файл"+"\n";
                FProgress_text = "Загрузка ...";
                
            } catch (error:Error) {
                Info_forME = "Unable to load requested document."+"\n";
                FProgress_text = "Ошибка при загрузке";
            }
  	}
  		
  	private function completeHandler(event:Event):void {
            var loader:URLLoader = URLLoader(event.target);
            Info_forME += "Загрузился \n";

            //На выходе имеем xml в представлении String что бы перевести в
            //ArrayCollection надо не плохо повозиться..
            FRezult_text = loader.data;


	    FProgress_text = "Файл загружен";
	    FFinish();
        }

	private function configureListeners(dispatcher:IEventDispatcher):void {
            dispatcher.addEventListener(Event.COMPLETE, completeHandler);
            dispatcher.addEventListener(Event.OPEN, openHandler);
            dispatcher.addEventListener(ProgressEvent.PROGRESS, progressHandler);
            dispatcher.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
            dispatcher.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler);
            dispatcher.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
        }

        private function openHandler(event:Event):void {
        	Info_forME += "openHandler: " + event+"\n";
        	FProgress_text = "Загрузка ...";
        }

        private function progressHandler(event:ProgressEvent):void {
            Info_forME += "progressHandler loaded: " + event.bytesLoaded + "  total: " + event.bytesTotal+"\n";

            //Отображаем процент загрузки!!! КРУТО
            FProgress_text = "Загрузка: "+Math.round(100*event.bytesLoaded/event.bytesTotal);
            
        }

        private function securityErrorHandler(event:SecurityErrorEvent):void {
            Info_forME += "securityErrorHandler: " + event+"\n";
            FProgress_text = "Ошибка при загрузке";
            FError();
        }

        private function httpStatusHandler(event:HTTPStatusEvent):void {
            Info_forME += "httpStatusHandler: " + event+"\n";
        }

        private function ioErrorHandler(event:IOErrorEvent):void {
            Info_forME += "ioErrorHandler: " + event+"\n";
            FProgress_text = "Ошибка при загрузке";
            FError();
        }
        
        private function FError():void {
        	dispatchEvent(new Event("FLoadError", true));
        }
        
        private function FFinish():void {
			dispatchEvent(new Event("FLoadFinish", true));
        }
    }
}
__________________
ОСТОРОЖНО!!!
Нестандартное мышление


Последний раз редактировалось FMensk; 06.10.2008 в 11:42.
Старый 05.10.2008, 22:02
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 4  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
А как это у вас вообще скомпилировалось? =/ По идее с такими названиями не должно... это ж додуматься надо назвать пакет Class...
Не знаю... то, что скопировано из мануала понятно, и должно работать, а что вы пытались сделать - это только вам извесно... использовать подчерки в названиях классов не принято равно как и называть методы с заглавной буквы и пихать заглавные буквы в названия пакетов. Только константы - все заглавными, ну и т.д... Ей богу, с первого взгляда какой-то ВБскрипт напоминает...

Пальцем в небо... .razdel.blok - это что? Если это узлы в ХМЛ, то что вам мешает точно так же к ним обратиться в обработчике completeHandler?
__________________
Hell is the possibility of sanity

Старый 06.10.2008, 11:37
FMensk вне форума Посмотреть профиль Отправить личное сообщение для FMensk Найти все сообщения от FMensk
  № 5  
Ответить с цитированием
FMensk
 
Аватар для FMensk

Регистрация: Aug 2007
Адрес: \BLR\MENSK
Сообщений: 62
Отправить сообщение для FMensk с помощью ICQ
спасибо ))) Стилистику исправил)))

вот xml

Код:
<?xml version="1.0" ?>
<razdel>
 <blok>
  <number>1</number>
  <name>Главная</name>
  <date>09.09.2008 17.36</date>
 </blok>

 <blok>
  <number>2</number>
  <name>НОВОСТИ</name>
  <date>09.09.2008 17.45</date>
 </blok>

 <blok>
  <number>3</number>
  <name>О нас</name>
  <date>10.09.2008 18.21</date>
 </blok>
</razdel>
можно подробнее про то как обратиться к узлу в обработчике completeHandler?

спасибо))
__________________
ОСТОРОЖНО!!!
Нестандартное мышление

Старый 06.10.2008, 12:12
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 6  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Код:
var xml:XML = XML(loader.data);
var xmllist:XMLList = xml.blok;
__________________
Hell is the possibility of sanity

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

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

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


 


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


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