AS3:将MovieClip存储在数据库中的方法

时间:2011-02-07 23:31:12

标签: actionscript-3

我可能有一个有趣的情况。我正在使用形状开发动态绘图工具,我需要能够将对象的当前“状态”存储在数据库中。

“形状”将是简单的几何形状以及自定义绘制的形状,因此我不能只存储它们的几何尺寸。

这是一个示例屏幕截图(简单形状):

enter image description here

在使用过程中,可以拖动,调整大小,旋转,删除这些形状并将其拆分为更小的形状,以便保留其当前属性。

有什么想法吗?我只需要一个起点。

4 个答案:

答案 0 :(得分:1)

您可以将数据作为ByteArray对象写入/读取到文件系统。如果您正在开发AIR应用程序,则此功能特别有用,因为您可以选择使用EncryptedLocalStore类加密数据(目前仅用于桌面部署目标)。

答案 1 :(得分:0)

一种典型的方法是存储绘图步骤集,然后在加载它们之后重新解析它们。即基本上存储绘图命令列表。这也可以让你在没有太多额外工作的情况下放松你的绘图,进行协作绘图等。对于不复杂的场景来说,这是一个很好的方法和非常低的内存。

这并不重要,但我认为当你在Graphics对象上绘制基元时,Flash就是如何绘制自己的。

答案 2 :(得分:0)

我可能建议从SVG的子集导出和导入。

尝试http://code.google.com/p/as3svgrendererlib/此库,您可能会发现它很有用。

答案 3 :(得分:0)

我怀疑会出现一些应用程序特定的情况,但这就是我接近它的方式(之前我做过类似的事情):

  1. 将所有可爱的东西放在一个Sprite或MovieClip中。
  2. 当您需要保存快照时,循环浏览此容器中的所有子项并保存x,y,scaleX,scaleY,alpha,rotation。您可能还希望保存名称以及可能flash.utils.describeType返回的内容,以便您可以动态实例化对象。
  3. 将所有这些填充到关联数组中(可能每个对象一个),序列化它,并将其保存在某处。您也可以创建一个XML结构并将其保存在那里。
  4. 根据您的需要,您可能需要保存过滤器,转换等。

    要重建,你基本上可以向后做所有事情。请注意堆叠顺序,以确保以相同的方式分层。

    这很简单,但应该是一个开始。如果我这样做,我会更多地考虑做同样的事情,但采用更好的面向对象的方法。