将图像保存在sharedObject中

时间:2013-02-18 08:08:34

标签: actionscript-3 flex flex4 flex4.6

如何将图像保存到SharedObject?我使用SharedObject作为保存应用程序状态,它适用于文本对象和UIComponent,但保存Image创建问题。它不会抛出任何问题。错误。

   userdiagram.imageData = zorder.getItemAt(i) as mx.controls.Image
   userdiagram.x        = (zorder.getItemAt(i)).x;
   userdiagram.y        = (zorder.getItemAt(i) ).y;
   userdiagram.height   = (zorder.getItemAt(i)).height
   userdiagram.width    = (zorder.getItemAt(i)).width

这里userdiagram是class而imageData是图像类型变量。

2 个答案:

答案 0 :(得分:3)

您必须使用byteArray将图像保存在sharedObject中。

您可以在此处详细了解:http://www.kirupa.com/forum/showthread.php?306972-Saving-bitmaps-to-a-shared-object

答案 1 :(得分:1)

我将图像保存为Abhinav的建议链接:

var data:BitmapData = new BitmapData((zorder.getItemAt(i) as mx.controls.Image).width, (zorder.getItemAt(i) as mx.controls.Image).height);
                data.draw((zorder.getItemAt(i) as mx.controls.Image));
                var encoder:JPGEncoder = new JPGEncoder();
                var bytes:ByteArray = encoder.encode(data);

                userdiagram.x         = (zorder.getItemAt(i)).x;
                userdiagram.y         = (zorder.getItemAt(i) ).y;
                userdiagram.height    = (zorder.getItemAt(i)).height
                userdiagram.width     = (zorder.getItemAt(i)).width
                userdiagram.rotation    = (zorder.getItemAt(i)).rotation
                userdiagram.bytes = bytes;
                saveState.addItem(userdiagram)

但是当我从sharedObject检索图像时,创建一个图像类型对象并使用以下代码:

var v:Object = _saveIn.data.value1.readObject();
p.source   = (v as ArrayList).getItemAt(i).bytes;

这里p是Image类对象,(v as ArrayList).getItemAt(i)是保存的字节数组位置。