0

URLLoaderを介して画像をロードし、それをムービークリップにポップして、そのムービークリップを表示できるアプリケーションがあります。

次に、必要に応じて画像を再読み込みできるように、その画像をxmlファイルに書き込むことができるようにする必要があります。

現在、画像を読み込んでから、次の行に沿って何かを介してBitmapDataとして保存しています。

var decodedBitmapData:BitmapData = Bitmap(image).bitmapData;
backgroundImageBitmapData = decodedBitmapData;

そして、次の行に沿って何かを実行して、それをxmlファイルに書き込みます。データは、aRoomsと呼ばれる配列に格納されているオブジェクトに格納されます。(上記の「backgroundImageBitmapData」はどれですか。)

var tempImage:Bitmap = new Bitmap(aRooms[i].backgroundImageData);
var bytes:ByteArray = tempImage.bitmapData.getPixels(tempImage.bitmapData.rect);
var roomBG:XML = new XML( <bg> { String(bytes) } </bg>);

次に、そのroomBG(XML)変数が、エクスポートする完全なXMLファイルに追加されます。

そこから、そのxmllistを読み取り、それをビットマップデータに変換して、ローダーを介してロードできるようにする必要があります。しかし、それは私が立ち往生しているところです。

私も間違って保存している可能性があるので、その場合は、すべてのヘルプと修正を歓迎します。

ありがとう。

4

1 に答える 1

0

私があなたの質問を正しく理解していれば。バイト配列の文字列表現が必要です。これは、base64でエンコードすることで実現できます。ここからライブラリをダウンロードできます

次に、次のようなものになります。

var rect:Rectangle = new Rectangle(0,0,myImage.width,myImage.height);
var byteArray:ByteArray = myImage.bitmapData.getPixels(rect);

//to encode to a string
var encoded:String = Base64.encodeByteArray(byteArray);

//to decode the string 
var decoded:ByteArray = Base64.decodeToByteArray(encoded);
decoded.position = 0;

var newBitmapData:BitmapData = new BitmapData(rect.width,rect.height,true,0xFFFFFFFF);
newBitmapData.setPixels(rect, decoded);

var newImage:Bitmap = new Bitmap(newBitmapData, "auto", true);
于 2012-05-09T12:15:08.863 に答える