2010-09-02 51 views
0

下面的代码用于组件中,我名为FileUpload.mxml,它在Flex应用程序的两个不同部分中使用。flex上传文件组件 - 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); 
    } 
} 

当在第一实例化时,它工作正常,但是当它在不同的章节中使用它从下面的代码获取以下错误:不正确的调用的函数:

错误#2037序列或更早的呼叫不成功。

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

它每次都遵循相同的序列,即file = new FileReference; configureFileListeners(文件); file.browse(); file.upload(uploadURL),但仅适用于正在创建的组件的第一个实例。

任何想法,将不胜感激。

在此先感谢。

安格斯。

回答

1

browse方法只能从“用户交互”事件(如CLICK事件)直接调用。如果将它包装在函数或类中,则会发生错误。

+0

这是据我可以告诉是: 的 Angus 2010-09-02 22:23:01

1

我在Flex中小白,但是从我读过:

尝试调用.cancel().browse前(),以确保任何情况下是相互矛盾的。