
18.02.2013, 18:32
|
|
Регистрация: Feb 2011
Сообщений: 431
|
Undo/Redo Manager - как лучше сделать ?
Доброго времени суток.
Пишу визуальный редактор.
Есть задача дать пользователю возможность откатывать свои действия.
По сути на сцене будут геометрические фигуры (Shape) и текстовые контейнеры, над которыми и будут производиться эти действия.
И появился вопрос - какой концепт вот такого Undo Manager'a лучше :
1) До выполнения функции (действия) сохранять состояния всех объектов на сцене и при откате обновлять все объекты на сцене.
Плюс - довольно просто регистрировать изменения, просто делаем скриншот, а при откате циклом проходим по всем объектам и восстанавливаем прежние значения.
Минус - будет храниться очень много данных, ну и возможно обновлять всю сцену (особенно текстовые поля с большим кол-вом текста) может дорого обойтись.
2) Регистрировать только текущие изменения, и объект(ы) который(е) изменился(ись) при выполнении определённых функций (действий).
Плюс - не нужно будет изменять все объекты, не нужно будет хранить инфу о всех объектах на сцене. Кроме того, в будущем надо будет внедрить возможность создания макросов, который по идее будет работать по такому принципу - регистрировать изменения одного объекта и воспроизводить их.
Минус - регистрация изменений будет сложнее, мне кажется. Кроме того, в s:TextArea (которую я использую) уже есть UndoManager, надо будет как-то с ним сотрудничать.
Что посоветуете вы ?
|