我正在尝试使用FileReference对象的load方法加载数据并使用它来显示所选图像的缩略图。
但是,在致电fr.load()
后,fr.data
仍为null
。
我在Windows 7上使用Flex Builder 3.0.2,使用Flex SDK 3.4和Flash Player 10 Debug。如果我在Eclipse的监视变量列表中评估fr.load()
,则会在读取"No such variable: load."
任何人都知道为什么会这样吗?
答案 0 :(得分:2)
您在等待load()
完成吗?尝试添加一个EventListener来监听要完成的负载。
fr.addEventListener(Event.COMPLETE, function(e:Event):void {
handleLoad(e);
});
您编写的handleLoad
函数可以通过e.target.data
答案 1 :(得分:1)
编辑:这仅适用于FP9。
你确定你使用的是合适的班级吗? FileReference
没有加载方法或数据属性。我猜你指的是URLLoader
类 - 它确实有两个,这就是你应该用来加载数据的东西。 FileReference类用于将文件从服务器下载到用户的计算机(而不是SWF),并将文件从用户的计算机上传到服务器。
使用URLLoader类将数据加载到SWF和Loader类,以将其他SWF和图像加载到SWF。 Loader
类具有content
属性,类似于data
属性URLLoader
将保存已加载的内容。这两个类的load()
方法都是异步的(返回时无需等待加载完成),因此,正如@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);
}
答案 2 :(得分:1)
我在FileReference类和load()函数中遇到了同样的问题。问题可以通过这种方式解决:
答案 3 :(得分:0)
您是否将任何内容传递给fileReference。
例如来自数据网格
var listFiles:DataGrid = new DataGrid();
var _refUploadFile:FileReference = new FileReference();
_refUploadFile = listFiles.selectedItem.file;
_refUploadFile.load();
答案 4 :(得分:0)
您必须先执行以下操作:
fileReference.cancel();