2012-03-13 1 views
0

Я пытаюсь загрузить большой XML-файл в ActionScript3. Проблема в том, что событие progress указывает, что bytesTotal равен нулю, и это приводит к бесконечной последовательности загрузки. Полный обработчик никогда не запускается.Бесконечный размер файла loading as3

Это то, что нужно делать.

loader = new Loader(); 
     loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadDone); 
     loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, dataAnalyzeProgress) 
     loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, io_error); 

     var urlRequest:URLRequest = new URLRequest(url); 
     loader.load(urlRequest); 


protected function io_error(event:IOErrorEvent):void 
    { 
     trace("IO ERROR") 
     trace(event.text) 

    } 

    protected function loadDone(event:Event):void 
    { 
     trace('DATA COMPLETE') 

     trace(event.target.content) 

    } 

    protected function dataAnalyzeProgress(e:ProgressEvent):void 
    { 
     trace((e.bytesLoaded/e.bytesTotal) *100+"%");  
     trace("Downloaded " + e.bytesLoaded + " out of " + e.bytesTotal + " bytes");  


     if(e.bytesTotal == 0) 
     { 
      loader.close(); 
     } 
    } 

У кого-то есть решение этой проблемы. Я попытался загрузить его через curl i, но все же та же проблема ...

+0

Почему бы вам не закрыть загрузчик во время мероприятия? – zzzzBov

+0

Если вы не можете загрузить файл с curl/wget, это, вероятно, не проблема AS3. Вместо того, чтобы проверять сервер. – taskinoor

+0

Это не обязательно, но я сделал это, чтобы закрыть соединение te, но без loader.close, он не будет работать ни – user1266573

ответ

1

Для загрузки xml данных необходимо использовать класс URLLoader, а не Loader. Loader класс предназначен для загрузки SWF и изображений (JPG, PNG, GIF). Попробуйте следующие строки:

var loader:URLLoader = new URLLoader(); 
loader.addEventListener(Event.COMPLETE, loadDone); 
loader.addEventListener(ProgressEvent.PROGRESS, dataAnalyzeProgress) 
loader.addEventListener(IOErrorEvent.IO_ERROR, io_error); 

var urlRequest:URLRequest = new URLRequest(url); 
loader.load(urlRequest); 
+0

Спасибо за помощь! Это решило мою проблему! – user1266573

Смежные вопросы