2012-09-26 60 views
0

我剛剛注意到我的應用程序中有些奇怪的東西。AIR> browseForSave奇怪的行爲

我有一個「保存」按鈕,觸發該功能:

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

單擊時,它顯示「瀏覽保存」以建議的名稱文件窗口。 現在我注意到,導出時,安裝和運行的應用程序,當我點擊按鈕首次一切是好的,但是當我再次點擊的位置看起來是這樣的:

enter image description here

的「哪裏」字段是相同的文件....?即使我點擊保存,它也不會保存。奇怪的是,在Flash Builder中測試我的應用程序時,這不會發生。 任何提示?

+1

這是一個錯誤,它是新的Air版本的新增功能,據我所知 - 不知道確切的位置發生了變化,但它發生在Air 3.4.0.2540。舊版本會正確顯示「Where」作爲目錄。 –

+1

進一步檢查:在Air 3.2.0.2070中按預期工作,但在3.3.0.3670/3.4.0.2540/3.4.0.2710中中斷。 –

+1

我只是竊聽了這個;在bugbase中是3345174。這隻會在輸出文件已經存在時發生(即第二次) - 所以潛在的解決方法是在「保存」發生時將輸出文件重命名爲臨時文件,然後在用戶取消時將其重命名爲「或者如果用戶保存文件的新版本,則刪除舊的重命名的文件。不過,這對我來說似乎有點危險。 –

回答

0

我做了上面的解決方法,它似乎有伎倆。代碼是這樣的:

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.nativeApplication.runtimeVersion)和Mac專用,避免做這種比必要更多。另外,如果您的文件保存代碼可能依賴對現有文件進行更改(而不是創建一個全新的文件),則需要稍微調整一下。