2010-09-02 19 views
0

Le code suivant est utilisé dans un composant Nom de fichier FileUpload.mxml qui est utilisé dans deux sections différentes de l'application Flex.Composant de fichier flex upload - Problèmes avec Filereference

private var uploadURL:URLRequest = new URLRequest; 
private var file:FileReference = new FileReference; 
private var media:MediaFacade; 

public function browse():void 
{ 
     var uUrl:String=""; // force 
     uploadURL=new URLRequest(); 

     file=new FileReference(); 
     configureListeners(); 

     file.browse(getTypes()); 
} 

private function configureListeners():void 
{ 
    file.addEventListener(Event.CANCEL, cancelHandler); 
      ... 
    if (!Application.application.hasEventListener("uploadFileEvent")) { 
     Application.application.addEventListener("uploadFileEvent", uploadFile); 
    } 
} 

Quand il est utilisé dans la première instancié, il fonctionne très bien, mais quand il est utilisé dans différentes sections, il obtient l'erreur suivante à partir du code ci-dessous:

Error # 2037: Les fonctions appelées à incorrect séquence, ou un appel précédent a échoué.

private function doUploadFile():void 
    { 
     try 
     { 
      file.upload(uploadURL); 
     } 
     catch (e:Error) { 
      trace(e.message); 
     } 
    } 

Il suit la même séquence à chaque fois, c'est-à-dire, file = new FileReference; configureFileListeners (fichier); file.browse(); file.upload (uploadURL) mais ne fonctionne que sur la première instance du composant en cours de création.

Toutes les idées seraient appréciées.

Merci d'avance.

Angus.

Répondre

1

browse seule la méthode peut être appelée directement à partir de l'événement "Interaction utilisateur" tel que l'événement CLICK. Si vous l'enveloppez dans une fonction ou une classe, cette erreur se produira.

+0

Il est d'être aussi loin que je peux dire: Angus

1

Je suis un noob à Flex, mais de ce que j'ai lu:

Essayez d'appeler .cancel() avant .browse() pour assurer qu'aucun événement conflictuel.