Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Реализация возможности «Шаг назад» (отменить действие) (http://www.flasher.ru/forum/showthread.php?t=174379)

Srednas 24.01.2012 09:39

Реализация возможности «Шаг назад» (отменить действие)
 
Здравствуйте.

Есть карта, на которой пользователь может производить некоторые действия (ставить точки, рисовать полигоны и прочее).
Нужно в приложении организовать возможность, после какого-либо действия, вернуться в предыдущее, пред-предыдущее (и т.д.) состояние. Может кто-нибудь сталкивался с таким вопросом. Подскажите как лучше сделать.
Копировать карту в память каждый раз при любом изменении? Или есть другие варианты?

BuKT 24.01.2012 09:58

Смотря каким образом у вас производятся "некоторые действия". Можно к каждому "конструктору" отображаемой части действия написать "деструктор", с теми же параметрами. И при каждом "совершении" действия (вызова "конструктора" с определёнными параметрами), банально кидать в массив параметры действия. При вызове "шага назад" - просто передавать соответствующему деструктору последние добавленные в массив параметры

carrotoff 24.01.2012 10:39

Для таких задач решение придумали давно.

BuKT 24.01.2012 11:08

Шаблон может и хорош, но хранить состояния, вместо того, чтобы хранить изменения состояния - мне кажется глупым.

carrotoff 24.01.2012 11:10

Цитата:

Сообщение от BuKT
Шаблон может и хорош, но хранить состояния, вместо того, чтобы хранить изменения состояния - мне кажется глупым.

У меня дежавю. Похоже на холивар Git против SVN:)

Stitch512 24.01.2012 14:27

http://www.rsdn.ru/article/dotnet/backforward.xml
Тут принципы реализации, на ActionScript перевести думаю труда не составит

Inet_PC 24.01.2012 18:59

Команда здесь, мне кажется, самое то.

expl 24.01.2012 21:02

Подхода тут всего 2:
- список состояний/изменений
сохраняем данные на каждом изменении и при откате разбираем switch-ами
- список комманд
при редактоировании применяем комманды, которые сами запоминают нужные данные для отката.

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

dimarik 24.01.2012 22:16

команд [x]

http://en.wikipedia.org/wiki/Command_pattern

Command objects are useful for implementing: Multi-level undo и прочая.


Мементо не предлагаю, т.к. он избыточен.


Часовой пояс GMT +4, время: 09:49.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.