Лучший способ сохранить данные с флэш-памяти - PullRequest
1 голос
/ 22 марта 2011

У меня есть документ AS3 с примерно 200 отдельными элементами, которые я пытаюсь сохранить в базе данных.Мне просто нужно сохранить информацию об их физических свойствах на сцене.

Есть много способов сделать это, но какой рекомендуемый подход?

Бэкэнд - это PHP / MySQL, и это не так.двусторонний обмен.Сохраните, готово.

Ответы [ 2 ]

2 голосов
/ 22 марта 2011

Помимо серверной стороны, хороший способ сохранить / назначить позицию / поворот / масштаб - использовать матрицы преобразования DisplayObjects:

shape.transform.matrix
sprite.transform.matrix

достаточно компактно; нужно хранить 6 номеров на объект. округление значений масштаба / поворота до 5 десятичных знаков (0,12345 вместо 0,1245458989123456) и перевод до 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 таким же образом.

2 голосов
/ 22 марта 2011

Я хотел бы проверить Flash Remoting / AMFPHP: http://amfphp.sourceforge.net/

Это довольно просто и очень легко реализовать.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...