从闪存保存数据的最佳方法

问题描述:

我有一个AS3文档,其中有大约200个单独的元素,我试图保存到数据库中。我只需要在舞台上保存有关其物理属性的信息。从闪存保存数据的最佳方法

有很多方法可以做到这一点,但推荐的方法是什么?

后端是PHP/MySQL,它不是双向交换。保存它,完成。

+1

小贴士:读一下amfphp的对象序列化/编组。非常快速,而且非常直接的实现。 – Bosworth99 2011-03-21 22:42:57

开,以存储/分配位置/旋转的好方法/尺度是使用的DisplayObject的变换矩阵:

shape.transform.matrix 
sprite.transform.matrix 

它是相当紧凑;需要为每个对象存储6个数字。 将缩放比例/旋转值四舍五入到小数点后5位(0.12345而不是0.123456789123456),并将其翻译为小数点后1位(0.1而不是0.123456)可以很好地保留一些Ko。 例如这种方法:

private function storeMatrix(displayObject:DisplayObject, decimals:int = 5):String 
{ 
    var str:String = ''; 
    var m:Matrix = displayObject.transform.matrix; 

    str += m.a.toFixed(decimals) + ':'; 
    str += m.b.toFixed(decimals) + ':'; 
    str += m.c.toFixed(decimals) + ':'; 
    str += m.d.toFixed(decimals) + ':'; 
    str += m.tx.toFixed(1) + ':'; 
    str += m.ty.toFixed(1); 

    return str; 
} 

将返回类似:

-0.95119:-0.30550:0.30550:-0.95119:110.0:110.0

这种方法设置的位置/旋转/比例从字符串:

private function assignMatrix(str:String, _do:DisplayObject):void 
{ 
    var values:Array = str.split(':'); 
    var m:Matrix = new Matrix(); 
    m.a = values[ 0 ]; 
    m.b = values[ 1 ]; 
    m.c = values[ 2 ]; 
    m.d = values[ 3 ]; 
    m.tx = values[ 4 ]; 
    m.ty = values[ 5 ]; 
    _do.transform.matrix = m; 
} 

一旦你'已经收集了所有对象的矩阵,您可以使用AMF将它们序列化并存储到数据库。上次我这样做时,我用FZIP来进一步压缩数据(500Ko> 20Ko)。我不认为它会对你的情况有所帮助,只是想指出:)

注意:如果需要,还可以以同样的方式存储对象的transform.ColorTransform属性。

+0

我选择这个作为答案,因为它使我最接近我的实际解决方案。使用变换矩阵。我还没有实现AMF,赞成是一个简单的张贴到外部脚本。 – jerebear 2012-08-14 03:57:35

我会检查出来的Flash Remoting/AMFPHP:http://amfphp.sourceforge.net/

这实在是太straightforwad,并很容易实现。

希望这会有所帮助。

从服务器端