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 -~----------~----~----~----~------~----~------~--~---