Resolvido!Segue a solução:

<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml";
layout="vertical" backgroundColor="white">
 <mx:Script>
<![CDATA[
 [Bindable] private var isSearching:Boolean = false;
[Bindable] private var totalFiles:int = 0;
 [Bindable] private var currentFile:String = "";
 private function searchDir(event:MouseEvent):void {
 var file:File = new File();
 file.addEventListener(Event.SELECT, dirSelected);
 file.browseForDirectory("Select a directory");
 function dirSelected(e:Event):void {
    trace(file.nativePath);
    isSearching = !isSearching;
    getFilesInformation(file.nativePath);
    isSearching = !isSearching;
}
}
 private function getFilesInformation(root:String):void {
var arq:File = new File(root);
 arq.addEventListener(FileListEvent.DIRECTORY_LISTING, dirListHandler);
arq.getDirectoryListingAsync();
 }
 private function dirListHandler(event:FileListEvent):void {
    var list:Array = event.files;

    for (var i:int = 0; i < list.length; i++){
var file:File = new File(list[i].nativePath);
 trace(file.nativePath);
if (file.isDirectory){
 getFilesInformation(file.nativePath);
trace("is dir");
 } else {
totalFiles++;
currentFile = file.nativePath;
 trace(file.name + " size: " + file.size);
}
 }
}
 ]]>
</mx:Script>
<mx:Button click="searchDir(event)" label="Choose Dir" />
 <mx:Label text="{currentFile}" width="200"/>
<mx:Label text="{String(totalFiles)}" />
 <mx:ProgressBar indeterminate="true" visible="{isSearching}"/>
</mx:WindowedApplication>


Abraço

2009/6/5 Arian Pasquali <arianpasqu...@gmail.com>

> voce está utilizando o método sincrono. Em uma linguagem com suporte a
> threads voce poderia criar uma thread extra para ler o arquivo enquanto
> mostrar o progresso na thread principal. lembra que o flash não tem suporte
> a threads.
> flash nao suporta threads,  mas no Air a api de files do Air tem umas
> metodos especificos para trabalhar de forma assincrona.
>
> de uma olhada nesse capitulo da documentação do air 1.5 e veja se voce
> encontra o que voce precisa.
> chapter 17
> topic - Asynchronous programming and the events generated by a FileStream
> object opened asynchronously
>
> http://help.adobe.com/en_US/AIR/1.5/devappsflex/devappsflex.pdf
>
> abs
>
> Arian Pasquali
> SCJP, ACE Flex 3 with AIR
> http://arianpasquali.wordpress.com/
> http://twitter.com/arianpasquali
>
> 2009/6/5 Thief <thief...@gmail.com>
>
> Olá pessoal,
>> estava fazendo uns testes com o AIR para um trabalho da faculdade, ai
>> criei um protótipo só para simular o problema.
>> Ao ler os arquivos, queria que mostrasse o progresso.
>> Mas ao começar a ler os diretórios recursivamente, ele trava a aplicação e
>> só destrava quando acaba de ler.
>> Alguém tem alguma sugestão?
>>
>> Segue um snippet.
>>
>> Att,
>>
>> <?xml version="1.0" encoding="utf-8"?>
>> <mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml";
>>  layout="vertical"
>> backgroundColor="white">
>>  <mx:Script>
>> <![CDATA[
>> import mx.effects.Pause;
>>  import mx.utils.ObjectUtil;
>>  [Bindable] private var isSearching:Boolean = false;
>>  [Bindable] private var currentFile:String = "";
>>  private function searchDir(event:MouseEvent):void {
>>  var file:File = new File();
>>  file.addEventListener(Event.SELECT, dirSelected);
>>  file.browseForDirectory("Select a directory");
>>  function dirSelected(e:Event):void {
>>     trace(file.nativePath);
>>     isSearching = !isSearching;
>>     getFilesInformation(file.nativePath);
>>     currentFile = "";
>>     isSearching = !isSearching;
>> }
>>  }
>>  private function getFilesInformation(root:String):void {
>>  var arq:File = new File(root);
>> var list:Array = arq.getDirectoryListing();
>>  for (var i:int = 0; i < list.length; i++){
>> var file:File = new File(list[i].nativePath);
>>  trace(file.nativePath);
>> if (file.isDirectory){
>>  getFilesInformation(file.nativePath);
>> trace("is dir");
>>  } else {
>> currentFile = file.nativePath;
>> trace(file.name + " size: " + file.size);
>>  }
>> }
>>  }
>>  ]]>
>>  </mx:Script>
>> <mx:Button click="searchDir(event)" label="Choose Dir" />
>>  <mx:Label text="{currentFile}" />
>> <mx:ProgressBar indeterminate="true" visible="{isSearching}"/>
>> </mx:WindowedApplication>
>>
>>
>>
>>
>
>
>
>
> >
>

--~--~---------~--~----~------------~-------~--~----~
Você recebeu esta mensagem porque está inscrito na lista "flexdev"
Para enviar uma mensagem, envie um e-mail para flexdev@googlegroups.com
Para sair da lista, envie um email em branco para 
flexdev-unsubscr...@googlegroups.com
Mais opções estão disponíveis em http://groups.google.com/group/flexdev
-~----------~----~----~----~------~----~------~--~---

Responder a