2012-03-15 61 views
2

我将AIR应用移植到iOS。应用程序将本地文件保存为File.browseForSave()。这似乎不适用于iPad。如何在iPad上保存文件?ipad上的File.browseForSave()

P.S.跟踪File.url说“app-storage:/New%20map.comap”。 iOS中不允许带%的名字?

最好的祝愿

+0

这在iOS上是不可能的! 这是一个重复http://stackoverflow.com/questions/9374077/file-browseforsave-on-ios/9375371#9375371 – 2012-03-15 15:46:46

+0

是的,我知道。我的同事提出了以前的问题,但建议并没有帮助。 – Kakadu 2012-03-16 09:56:34

+0

我不明白你的评论。哪些建议没有奏效?没有建议...只是BrowseForSave不允许在iOS上。您仍可以保存路径而不浏览,但只能在具有正确权限的正确文件夹中保存。 – 2012-03-16 21:45:01

回答

0

您只能保存到应用程序沙箱区域内的特定目录。例如文档目录。

像这样的东西将图像保存到文档目录。它使用Adobe JPGEncoder创建一个写入的字节数组,并使用裁剪方法拍摄舞台快照。

private function createImages():void { 

    var snapShot:Bitmap = crop(0, 0, 1024, 768); 

    f = File.documentsDirectory.resolvePath("test.jpg"); 

    var stream:FileStream = new FileStream(); 
    stream.open(f, FileMode.WRITE);           

    var j:JPGEncoder = new JPGEncoder(80); 

    var bytes:ByteArray = new ByteArray(); 
    bytes = j.encode(snapShot.bitmapData); 

    stream.writeBytes(bytes, 0, bytes.bytesAvailable); 
    stream.close(); 

    stream.openAsync(f, FileMode.READ); 
    stream.addEventListener(Event.COMPLETE, imagewritten, false, 0, true); 


} 

private function imagewritten(e:Event):void { 
trace("done"); 
} 



private function crop(_x:Number, _y:Number, _width:Number, _height:Number, displayObject:DisplayObject = null):Bitmap 
{ 

var cropArea:Rectangle = new Rectangle(0, 0, _width, _height); 

var croppedBitmap = new Bitmap(new BitmapData(_width, _height), PixelSnapping.ALWAYS, true); 

croppedBitmap.bitmapData.draw((displayObject!=null) ? displayObject : stage, new Matrix(1, 0, 0, 1, -_x, -_y) , null, null, cropArea, true); 

cropArea = null; 

return croppedBitmap; 
}