2

我正在尝试使用 FileReference 对象的加载方法来加载数据并使用它来显示所选图像的缩略图。

但是,调用后fr.load()fr.data仍然存在null

我在带有 Flex SDK 3.4 和 Flash Player 10 调试的 Windows 7 上使用 Flex Builder 3.0.2。如果我在 Eclipse 的监视变量列表中进行评估fr.load(),我会收到错误读数"No such variable: load."

有谁知道为什么会这样?

4

5 回答 5

2

你在等待load()完成吗?尝试添加一个 EventListener 来监听负载是否完成。

文件参考文档

fr.addEventListener(Event.COMPLETE, function(e:Event):void {
                                        handleLoad(e);
                                    });

然后,您编写的handleLoad函数可以通过e.target.data

于 2009-11-11T02:05:37.367 回答
1

编辑:这仅适用于 FP9。


您确定您使用的是正确的课程吗?FileReference没有加载方法或数据属性。我猜您指的是URLLoader该类-它确实具有两者,而这正是您应该用来加载数据的。FileReference类用于将文件从服务器下载到用户机器(而不是 SWF),并将文件从用户机器上传到服务器。

使用URLLoader类将数据加载到 SWF 并使用Loader类将其他 SWF 和图像加载到您的 SWF。Loader类有一个content属性,类似于将保存加载内容的data属性。URLLoaderload()两个类的方法都是异步的(不等待加载完成就返回),因此,正如@dustmachine 所指出的,您只能在Event.COMPLETE触发后访问加载的数据/内容。

var urlLoader:URLLoader = new URLLoader();
urlLoader.addEventListener(Event.COMPLETE, onLoad);
urlLoader.load(new URLRequest(theURL));

private function onLoad(e:Event):void
{
  var urlLoader:URLLoader = URLLoader(e.target);
  trace(urlLoader.data);
}
于 2009-11-11T04:53:39.613 回答
1

我对 FileReference 类和 load() 函数有同样的问题。问题可以这样解决:

  1. 打开“Flex 构建路径”选项卡。
  2. 展开“Flex 3”,选择“playerglobal.swc”并点击“删除”。
  3. 注意“Flex 3 -”中的目录路径(在我的系统上是 /Applications/Adobe Flex Builder 3 Plug-in/sdks/3.2.0)。
  4. 单击“添加 SWC”并导航到该路径,然后深入到 frameworks/libs/player/10,选择 playerglobal.swc。
  5. 展开“playerglobal.swc”,双击“链接类型”并将其更改为“外部”。
  6. 打开“Flex 编译器”选项卡
  7. 在“HTML wrapper”中,将“Require Flash Player version”更改为 10.0.0。
于 2010-04-09T14:51:37.183 回答
0

您是否将任何内容传递给 fileReference。

例如来自数据网格

var listFiles:DataGrid = new DataGrid();
var _refUploadFile:FileReference = new FileReference();                 
_refUploadFile = listFiles.selectedItem.file;   

_refUploadFile.load();
于 2009-11-11T02:02:42.427 回答
0

您必须首先执行以下操作:

fileReference.cancel();
于 2013-12-10T09:11:18.667 回答