|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Nov 2010
Сообщений: 430
|
Реализация возможности «Шаг назад» (отменить действие)
Здравствуйте.
Есть карта, на которой пользователь может производить некоторые действия (ставить точки, рисовать полигоны и прочее). Нужно в приложении организовать возможность, после какого-либо действия, вернуться в предыдущее, пред-предыдущее (и т.д.) состояние. Может кто-нибудь сталкивался с таким вопросом. Подскажите как лучше сделать. Копировать карту в память каждый раз при любом изменении? Или есть другие варианты? |
|
|||||
Смотря каким образом у вас производятся "некоторые действия". Можно к каждому "конструктору" отображаемой части действия написать "деструктор", с теми же параметрами. И при каждом "совершении" действия (вызова "конструктора" с определёнными параметрами), банально кидать в массив параметры действия. При вызове "шага назад" - просто передавать соответствующему деструктору последние добавленные в массив параметры
__________________
Дебаггер не предлагать |
|
|||||
Регистрация: May 2010
Сообщений: 543
|
Цитата:
__________________
Вы грабите бедных людей. Парень со свирелью накажет вас. Хонгильдон (с) |
|
|||||
Регистрация: Nov 2010
Сообщений: 150
|
http://www.rsdn.ru/article/dotnet/backforward.xml
Тут принципы реализации, на ActionScript перевести думаю труда не составит |
|
|||||
Команда здесь, мне кажется, самое то.
__________________
http://www.chessmax.ru |
|
|||||
Подхода тут всего 2:
- список состояний/изменений сохраняем данные на каждом изменении и при откате разбираем switch-ами - список комманд при редактоировании применяем комманды, которые сами запоминают нужные данные для отката. Первый подход проще. Второй гибше и расширяемей. А что запоминать - изменения или все состояние - это зависит от требуемых ресурсов. Запоминать все проще, но если дорого - надо запоминать только изменения. Последний раз редактировалось expl; 24.01.2012 в 21:07. |
|
|||||
.
|
команд [x]
http://en.wikipedia.org/wiki/Command_pattern Command objects are useful for implementing: Multi-level undo и прочая. Мементо не предлагаю, т.к. он избыточен. Последний раз редактировалось dimarik; 24.01.2012 в 22:20. |
Часовой пояс GMT +4, время: 13:55. |
|
« Предыдущая тема | Следующая тема » |
Теги |
ctrl+z , отменить действие |
|
|