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

Responder a