代码之家  ›  专栏  ›  技术社区  ›  Sr.Richie

AIR>browseForSave奇怪的行为

  •  0
  • Sr.Richie  · 技术社区  · 12 年前

    我刚刚在我的应用程序中发现了一些奇怪的东西。

    我有一个“保存”按钮,可以触发此功能:

     var saveFile:File = File.desktopDirectory.resolvePath(nameOfProject+".uct");
     saveFile.browseForSave("Save as");
     saveFile.addEventListener(Event.SELECT, saveFileToSystem);
    

    单击时,它会显示“浏览保存”窗口,其中包含一个建议的名称文件。 现在我注意到,在导出、安装和运行应用程序时,当我第一次点击按钮时,一切都很好,但当我再次点击时,位置看起来是这样的:

    enter image description here

    “where”字段是同一个文件。。。。?即使我点击保存,它也不会保存。奇怪的是,在Flash Builder中测试我的应用程序时没有发生这种情况。 有什么提示吗?

    1 回复  |  直到 12 年前
        1
  •  0
  •   Dan Mitchell    12 年前

    我做了上面的变通方法,它似乎奏效了。代码是这样的:

    var saveFile:File = File.documentsDirectory.resolvePath("output.file");
    var tempMovedAway:File = File.applicationStorageDirectory.resolvePath("temp.temp");
    currentFileRenamedForAirBug = picker.clone();
    currentFileRenamedForAirBug.moveTo(tempMovedAway), true);
    saveFile.addEventListener(Event.SELECT, function():void {
            tempMovedAway.deleteFile();
        } );
    saveFile.addEventListener(Event.CANCEL, function():void {
            tempMovedAway.moveTo(currentFileRenamedForAirBug);
        });
    saveFile.browseForSave("save file"); 
    // MUST be sure to call saveFile.browseForSave, or you risk losing an existing file.
    

    您可以将这一批代码封装在仅针对Air运行时(NativeApplication.natuteApplication.runtimeVersion)和Mac的检查中,以避免在必要时执行任何操作。

    此外,如果您的文件保存代码可能依赖于对现有文件进行更改(而不是创建一个全新的文件),则需要对此进行一些调整。