2011-10-10 52 views
4

我發現下面的代碼片段將圖像保存到Adobe AIR的特定文件夾中。Adob​​e AIR - 將圖像保存到硬盤驅動器

如何修改它首次出現的"Save As" OS窗口? (因此用戶可以選擇將圖像保存在硬盤上的位置)

var arrBytes:ByteArray = PNGEncoder.encode(bmd); 
    var file:File = File.desktopDirectory.resolvePath(folderName + "/" + fileName + fileNum + ".png"); 
    var fileStream:FileStream = new FileStream(); 
    // 
    fileStream.open(file, FileMode.WRITE); 
    fileStream.writeBytes(arrBytes); 
    fileStream.close(); 

謝謝。

回答

5

使用File.browseForSave

import flash.filesystem.*; 
import flash.events.Event; 
import flash.utils.ByteArray; 

var imgBytes:ByteArray = PNGEncoder.encode(bmd); 
var docsDir:File = File.documentsDirectory; 
try 
{ 
    docsDir.browseForSave("Save As"); 
    docsDir.addEventListener(Event.SELECT, saveData); 
} 
catch (error:Error) 
{ 
    trace("Failed:", error.message); 
} 

function saveData(event:Event):void 
{ 
    var newFile:File = event.target as File; 
    if (!newFile.exists) // remove this 'if' if overwrite is OK. 
    { 
     var stream:FileStream = new FileStream(); 
     stream.open(newFile, FileMode.WRITE); 
     stream.writeBytes(imgBytes); 
     stream.close(); 
    } 
    else trace('Selected path already exists.'); 
} 

manual永遠是你的朋友:)

BTW,我看你是相對較新的位置 - 歡迎StackExchange!如果您發現我的答案有幫助,請務必將其選爲答案。

+0

已選定。非常感謝你。順便說一句:有沒有一種「最快的方式」來保存圖像從AIR驅動?通過編碼一個2800像素×2800像素的位圖,我總是得到一個延遲,直到它被保存 - 這是正常的? – Tom

+0

很高興幫助。延遲與編碼(不是文件寫入)。見[這裏](http://stackoverflow.com/questions/2509554/fast-or-asynchronous-as3-jpeg-encoding)和他們中最快的[here](http://www.blooddy.by/en /加密/基準/)。 –

+0

很好。感謝您的鏈接。 – Tom