Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache flex 刚通过FileReference加载的文件的文件名不可用_Apache Flex - Fatal编程技术网

Apache flex 刚通过FileReference加载的文件的文件名不可用

Apache flex 刚通过FileReference加载的文件的文件名不可用,apache-flex,Apache Flex,要将3个文件本地加载到Flash Player中,可以在用户选择文件后使用类似的方法管理序列 private function uploadList(evt:Event):void{ var arr:Array = fileReferenceList.fileList; for each(var item:FileReference in arr){ item.addEventListener(Event.COMPLETE, o

要将3个文件本地加载到Flash Player中,可以在用户选择文件后使用类似的方法管理序列

    private function uploadList(evt:Event):void{

        var arr:Array = fileReferenceList.fileList;

        for each(var item:FileReference in arr){
            item.addEventListener(Event.COMPLETE, onFileLoadComplete);
            item.load();
        }

    }
//第2步-继续加载文件并等待第3步…在本用例中将调用三次

    private function onFileLoadComplete(e:Event):void {

        var loader:Loader = new Loader();

        loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onDataLoadComplete);
        loader.loadBytes(FileReference(e.target).data);
    }
//步骤3-Flash Player已加载文件并准备好处理。。。 //此示例是一个正在填充到BitmapData对象中的图像

private function onDataLoadComplete(e:Event):void {
        var bitmapData:BitmapData = Bitmap(e.target.content).bitmapData;
        var loader:Loader = Loader(e.target.loader);

}

//步骤4-通过步骤3的每个文件的文件名和文件字节大小在哪里

我无法在现有对象中定位此数据

我自己的决心

我把这些信息塞进一个简单的字典,以后再检索

也许还有其他解决办法

private function onFileLoadComplete(e:Event):void {

        if(FileReference(e.target).data.length == 0){
            return;
        }           

        var loader:Loader = new Loader();
        filenameDict[loader] = String(FileReference(e.target).name);

        loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onDataLoadComplete);
        loader.loadBytes(FileReference(e.target).data);
    }


    private function onDataLoadComplete(e:Event):void {
        var bitmapData:BitmapData = Bitmap(e.target.content).bitmapData;

        var loader:Loader = Loader(e.target.loader);
        var file:String = filenameDict[loader];
        delete filenameDict[loader];

您可以使用数组,但从代码中可以看出,字典是更简单的方法

var files:Array = [];
var loaders:Array = [];
private function onFileLoadComplete(e:Event):void 
{
  var loader:Loader = new Loader();
  files.push(e.target);
  loaders.push(loader);
  loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onDataLoadComplete);
  loader.loadBytes(FileReference(e.target).data);
}
private function onDataLoadComplete(e:Event):void
{
  var bitmapData:BitmapData = Bitmap(e.target.content).bitmapData;
  var loader:Loader = Loader(e.target.loader);
  var index:Number = loaders.indexOf(loader);
  var file:String = FileReference(files[index]).name;
  /*
   * Clear the arrays to get rid of unwanted references that might 
   * prevent them from being garbage collected.
   * */
  files.splice(index);
  loaders.splice(index);
}
当我发布这篇文章的第一个版本时,我没有注意到FP10的文件引用