About

<#TEMPLATE_INCLUDE_NINEPAGE_ABOUTME#>
  • Jan

    20

    AIR 应用程序目前的 File 类在使用browseForSave() 方法时,没有文件扩展名过滤功能(没有 FileFilter 作为过滤列表)。一种替代方法是改成 FileReference 类的sava() 方法来保存数据,因为sava() 方法可以设置默认的保存文件名。但这并不是一个很好的方法,因为用户是可以修改扩展名的。所以可以对 File 类的 browseForSave() 方法可以作一些改进,让它变成有扩展名,并且在保存对话框中无法修改(但它也会有一个缺点,就是用户在保存时是看不到扩展名的,所以也就可以防止用户在保存时修改扩展名)。样例代码如下:

    //导出保存的文件
    var file:File = new File();
     
    try{
     file.browseForSave("保存为");
     file.addEventListener(Event.SELECT, saveData);
    }catch (error:Error){
     trace("保存失败:", error.message);
    }
     
    function saveData(event:Event):void{
     file = event.target as File;
     file.url += ".zfp";//这一步是关键,隐藏添加了扩展名
     var fileStream:FileStream = new FileStream();
     fileStream.open(file, FileMode.WRITE);
     fileStream.writeBytes("这里是要保存的数据");
     fileStream.close();
    }

    Jan

    7

    AIR 文件类型过滤

    • 0 Comments
    • Flash Platform

    主要是browseForOpenMultiple第二个参数的使用,没啥好说的

    import flash.filesystem.*;
    import flash.events.FileListEvent;
    var docsDir:File = File.documentsDirectory;
    var _allFF:FileFilter = new FileFilter("*.bmp;*.jpeg;*.jpg;*.png","*.bmp;*.jpeg;*.jpg;*.png");
    var _bmpFF:FileFilter = new FileFilter("*.bmp","*.bmp");
    var _jpgFF:FileFilter = new FileFilter("*.jpg","*.jpg");
    var _jpegFF:FileFilter = new FileFilter("*.jpeg","*.jpeg");
    var _pngFF:FileFilter = new FileFilter("*.png","*.png");
    try {
     docsDir.browseForOpenMultiple("选择图像文件",[_allFF,_bmpFF,_jpgFF,_jpegFF,_pngFF]);
     docsDir.addEventListener(FileListEvent.SELECT_MULTIPLE, filesSelected);
    } catch (error:Error) {
     trace(error.message);
    }
    function filesSelected(event:FileListEvent):void {
     for (var i:uint = 0; i < event.files.length; i++) {
      trace(event.files[i].nativePath);
     }
    }