从闪存保存数据的最佳方法
我有一个AS3文档,其中有大约200个单独的元素,我试图保存到数据库中。我只需要在舞台上保存有关其物理属性的信息。从闪存保存数据的最佳方法
有很多方法可以做到这一点,但推荐的方法是什么?
后端是PHP/MySQL,它不是双向交换。保存它,完成。
开,以存储/分配位置/旋转的好方法/尺度是使用的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属性。
我选择这个作为答案,因为它使我最接近我的实际解决方案。使用变换矩阵。我还没有实现AMF,赞成是一个简单的张贴到外部脚本。 – jerebear 2012-08-14 03:57:35
我会检查出来的Flash Remoting/AMFPHP:http://amfphp.sourceforge.net/
这实在是太straightforwad,并很容易实现。
希望这会有所帮助。
从服务器端
小贴士:读一下amfphp的对象序列化/编组。非常快速,而且非常直接的实现。 – Bosworth99 2011-03-21 22:42:57