AS3: Подход для хранения MovieClips в базе данных - PullRequest
1 голос
/ 08 февраля 2011

У меня потенциально интересная ситуация. Я разрабатываю инструмент для динамического рисования с использованием фигур, и мне нужно иметь возможность сохранять текущее «состояние» объектов в базе данных.

"Фигуры" будут простыми геометрическими вместе с нарисованными на заказ фигурами, поэтому я не могу просто хранить их геометрические следы.

Вот пример снимка экрана (простые формы):

enter image description here

Во время использования эти фигуры можно перетаскивать, изменять их размер, поворачивать, удалять и разбивать на более мелкие фигуры, поэтому их текущие свойства необходимо сохранить.

Есть идеи? Мне просто нужна отправная точка.

Ответы [ 4 ]

1 голос
/ 08 февраля 2011

вы можете записать / прочитать ваши данные как ByteArray объекты в файловой системе.это особенно полезно при разработке приложения AIR, поскольку у вас есть возможность зашифровать данные с помощью класса EncryptedLocalStore (в настоящее время только для целей развертывания на рабочем столе).

0 голосов
/ 08 февраля 2011

Я бы, вероятно, рекомендовал экспортировать и импортировать из подмножества SVG.

Попробуйте http://code.google.com/p/as3svgrendererlib/ эту библиотеку, вы можете найти ее полезной.

0 голосов
/ 08 февраля 2011

Я подозреваю, что будут некоторые специфические для приложения обстоятельства, но именно так я бы подошел (я делал подобные вещи раньше):

  1. Поместите все пригодные для жизни вещи в один Спрайт или MovieClip.
  2. Когда вам нужно сохранить снимок, переберите все дочерние элементы в этом контейнере и сохраните значения x, y, scaleX, scaleY, alpha, вращение. Вы также можете сохранить имя и, возможно, то, что возвращает flash.utils.describeType, чтобы вы могли динамически создавать экземпляры объектов.
  3. Сложите все это в ассоциативный массив (возможно, по одному для каждого объекта), сериализуйте его и сохраните где-нибудь. Вы также можете создать структуру XML и сохранить все это там.

В зависимости от ваших потребностей вам может понадобиться сохранить фильтры, преобразовать и т. Д.

Чтобы восстановить, вы, по сути, делаете все задом наперед. Просто будьте осторожны с вашим порядком укладки, чтобы убедиться, что вы наложите слой одинаково.

Это довольно упрощенно, но должно быть для начала. Если бы я делал это, я бы больше думал о том, чтобы делать по существу то же самое, но с лучшим объектно-ориентированным подходом.

0 голосов
/ 08 февраля 2011

Один из типичных подходов - сохранить набор этапов рисования, а затем повторно проанализировать их после загрузки.т.е. в основном хранит список команд рисования.Это также позволяет вам раскручивать свой рисунок без лишней дополнительной работы, делать совместный рисунок и т. Д. Это хороший подход и очень мало памяти для несложных сцен.

Это не очень важно, но я думаю, что этоВ любом случае Flash выполняет прорисовку при рисовании примитивов на объекте Graphics.

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