0

以下代码用于我命名为 FileUpload.mxml 的组件中,该组件用于 flex 应用程序的两个三个不同部分。

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;配置文件监听器(文件);文件.浏览();file.upload(uploadURL) 但仅适用于正在创建的组件的第一个实例。

任何想法,将不胜感激。

提前致谢。

安格斯。

4

2 回答 2

1

我是 Flex 的菜鸟,但从我读到的内容来看:

尝试在 .browse() 之前调用 .cancel() 以确保没有事件发生冲突。

于 2013-12-31T16:54:20.070 回答
1

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

于 2010-09-02T08:29:45.883 回答