Desculpem responder a mim próprio, mas queria deixar uma informação extra para ajudar alguém que passe por isto:
- problema acontece apenas no firefox do Mac - Flash player version: 10.32.18 Debug testei no safari, mesma versão do player e funciona bem, posso abrir e cancelar fileRefs quantas vezes quiser. testei em winxp IE, mesma versão do player, sem debug, funciona. Viva o firefox? :-P MV 2009/12/4 Miguel Vaz <[email protected]> > > Boa tarde, > > Estou a ter um comportamento muito estranho na minha aplicação. > > Criei um componente de upload, com todos os eventlisteners a que tem > direito, mas se, ao abrir a janela de escolha de ficheiro, eu fizer > "cancelar", a janela de origem, aliás, todo o flex, fica bloqueado. A janela > que abriu o fileref desaparece e a aplicação fica em freeze. > > Já alguém teve uma experiência semelhante? É demasiado bizarro, nem faço > ideia a que deitar a eventual culpa. > No código abaixo, criei um botão para abrir o filereference apenas para > verificar eventuais erros, mas a situação mantém-se. > > Fiz debug, mas não existem problemas. O módulo de upload é o seguinte > (parece longo mas é básico): > > <?xml version="1.0" encoding="utf-8"?> > <mx:TitleWindow xmlns:mx="http://www.adobe.com/2006/mxml" > layout="absolute" > showCloseButton="true" close="fechar()" > width="400" > height="188" > title="Upload de Ficheiro" > > > <mx:states> > <mx:State name="fim"> > <mx:RemoveChild target="{pb}"/> > <mx:RemoveChild target="{fich}"/> > <mx:AddChild position="lastChild"> > <mx:Label y="76" text="Ficheiro enviado com sucesso." > fontSize="14" horizontalCenter="0" color="#0BED06" fontWeight="normal"/> > </mx:AddChild> > <mx:AddChild position="lastChild"> > <mx:Button click="fechar()" y="116" label="Fechar" > horizontalCenter="0" color="#FF0000" height="20"/> > </mx:AddChild> > </mx:State> > </mx:states> > > <mx:Metadata> > [ Event( name="fimUpload", type="eventos.GenEvent") ] > </mx:Metadata> > <mx:Script> > <![CDATA[ > import eventos.GenEvent; > import mx.controls.Alert; > import modelo.AModel; > import mx.managers.PopUpManager; > import mx.managers.PopUpManagerChildList; > > [Bindable] > public var phpFile:String; > > public var tipo:uint; > > private var fr:FileReference; > > [Bindable] > private var smodelo:AModel=AModel.instance; > > private var imageTypes:FileFilter = new FileFilter("Images > (*.jpg, *.jpeg,)", "*.jpg;*.jpeg"); > private var allTypes:Array = new Array(imageTypes); > > private function init():void > { > > currentState=''; > fr=new FileReference(); > > fr.addEventListener(Event.OPEN, onOpen); > fr.addEventListener(Event.COMPLETE, onComplete); > fr.addEventListener(Event.SELECT, onSelect); > fr.addEventListener(Event.CANCEL, onCancel); > fr.addEventListener(ProgressEvent.PROGRESS, onProgress); > > fr.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); > fr.addEventListener(SecurityErrorEvent.SECURITY_ERROR, > securityErrorHandler); > > browse(); > > } > > private function onOpen(e:Event):void > { > pb.label="%3%%"; > } > > private function browse():void > { > fr.browse(allTypes); > } > > private function onComplete(e:Event):void > { > currentState='fim'; > > var dados:Object = new Object(); > dados.tipo = tipo; > var myEventObj:GenEvent = new GenEvent("fimUpload",dados ); > dispatchEvent( myEventObj ); > > } > > private function onSelect(e:Event):void > { > > fich.text = fr.name; > var request:URLRequest=new URLRequest(phpFile); > fr.upload(request); > //pb.visible = true; > } > private function onCancel(e:Event):void > { > > //fechar(); > > } > > private function onProgress(e:ProgressEvent):void > { > pb.setProgress(e.bytesLoaded, e.bytesTotal); > } > > private function ioErrorHandler(event:IOErrorEvent):void > { > > Alert.show("IO Error in uploading file.", "Error"); > fr.cancel(); > clearUpload(); > > } > > private function > securityErrorHandler(event:SecurityErrorEvent):void > { > Alert.show("security Error in uploading file.", "Error"); > fr.cancel(); > clearUpload(); > > } > > > private function clearUpload():void > { > > fr.removeEventListener(Event.OPEN, onOpen); > fr.removeEventListener(Event.COMPLETE, onComplete); > fr.removeEventListener(Event.SELECT, onSelect); > fr.removeEventListener(Event.CANCEL, fechar); > fr.removeEventListener(ProgressEvent.PROGRESS, onProgress); > > fr.removeEventListener(IOErrorEvent.IO_ERROR, > ioErrorHandler); > fr.removeEventListener(SecurityErrorEvent.SECURITY_ERROR, > securityErrorHandler); > fr.cancel(); > > } > > > > private function fechar():void > { > > PopUpManager.removePopUp(this); > > } > > > ]]> > </mx:Script> > <mx:Label y="40" text="PHP: {phpFile}" horizontalCenter="0" > color="#B31414" fontSize="14"/> > <mx:Label id="fich" text="" enabled="true" width="100%" y="63"/> > <mx:ProgressBar width="100%" id="pb" mode="manual" y="84"/> > <mx:Button click="init()" x="10" y="10" label="Button"/> > > > > </mx:TitleWindow> > > --~--~---------~--~----~------------~-------~--~----~ Recebeu esta mensagem porque está inscrito em Grupo "Mailing List da Comunidade Portuguesa de Rich Internet Applications - www.riapt.org" do Grupos Google. Para enviar mensagens para este grupo, envie um email para [email protected] Para anular a inscrição neste grupo, envie um email para [email protected] Para mais opções, visite este grupo em http://groups.google.com/group/riapt?hl=pt-PT -~----------~----~----~----~------~----~------~--~---
