簡體   English   中英

使用Adobe AIR在iOS上保存位圖

[英]Saving bitmap on iOS using Adobe AIR

我終於想從iOS開始將Flash游戲移植到應用程序中。 我被困在圖像保存功能上。 在swf中,我使用jpegencoder保存到桌面服務器。 經過一些研究,似乎該代碼仍然可以在移動設備上運行,因此我嘗試了一下,但是在Adobe AIR的iPhone上進行測試時,它似乎沒有任何作用(該按鈕記錄了一次單擊,但是沒有圖像可以顯示)。找到,沒有任何事件的通知,沒有請求訪問圖像的許可等)。 這是舊的代碼:

saveToDisc.addEventListener(MouseEvent.CLICK, saveToDiscSave);
function saveToDiscSave(e:MouseEvent):void {
    this.visible = false;  //hides menu

    var bitmapData:BitmapData = new BitmapData(1242,1864);
    bitmapData.draw(MovieClip(root));
    var jpgEncoder:JPGEncoder = new JPGEncoder(80);
    var byteArray:ByteArray = jpgEncoder.encode(bitmapData);
    var fileReference:FileReference=new FileReference();
    fileReference.save(byteArray, "Dinogeddon-DollDivine.jpg");

    //this.visible = true;  //returns menu. commented out to see if click registered
}

因此,通過更多的研究,我發現了CameraRoll代碼,該代碼看起來很簡單,並且是專門為iOS設計的。 因此,我嘗試了一下,但是遇到了同樣的問題:沒有證據表明發生了任何事情。 沒有保存圖像,沒有錯誤,沒有權限請求。

saveToDisc.addEventListener(MouseEvent.CLICK, saveToDiscSave);
function saveToDiscSave(e:MouseEvent):void {
    this.visible = false;

    var cameraRoll:CameraRoll = new CameraRoll();
    var bitmapData:BitmapData = new BitmapData(1242,1864);
    bitmapData.draw(MovieClip(root));
    cameraRoll.addBitmapData(bitmapData);

    //this.visible = true;
}

就像,我什至不知道我要怎么做。。處於測試模式的應用程序甚至能夠保存圖像嗎? 我應該期待某種通知彈出嗎? 保存到手機上的東西有大小限制嗎? HALP

移動應用程序的行為與台式機應用程序非常相似,但是您的代碼實際上並未真正適合於此。 您甚至都沒有嘗試使用專門為台式機和移動設備設計的類,例如File類。 無論如何,在我向您展示需要為Web做swf的步驟(代碼顯示的內容)之前,您想要移動/桌面應用程序然后適應它並使用AIR類。

首先,通過提交字節數組獲取數據:

var byteArray:ByteArray = new ByteArray();
bitmapData.encode(new Rectangle(0,0,bitmapData.width,bitmapData.height), new PNGEncoderOptions(), byteArray);

其次,選擇一個目的地(在移動設備上通常是File.applicationStorageDirectory),然后使用AIR類File。

var dest:File = File.applicationStorageDirectory.resolvePath("mypng.png");

第三,獲得數據,獲得目的地,現在使用AIR類FileStream保存:

var stream:FileStream = new FileStream();
stream.open(dest, FileMode.WRITE);
stream.writeBytes(byteArray);
stream.close();

就是這樣。 使用File類在存儲目錄中創建目錄和文件。 請注意,在移動設備上,您將不允許將文件保存在任何地方,這就是為什么使用applicationStorageDirectory更好,因為它始終可用並且可以沙箱使用。

所以...像我一樣,相機膠卷代碼確實可以工作。 這確實是一種非常不錯的方法。 我想我在正確測試方面遇到了問題,只是無法判斷它是否在工作。

正常工作時,它會在設備上一次請求權限,然后保存而不會發出通知,因此我添加了一些動畫來隱藏“保存”按鈕幾秒鍾,以便用戶自己不會收到垃圾郵件,並提供可視化信息提示已按下按鈕。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM