Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 24.01.2012, 09:39
Srednas вне форума Посмотреть профиль Отправить личное сообщение для Srednas Найти все сообщения от Srednas
  № 1  
Ответить с цитированием
Srednas

Регистрация: Nov 2010
Сообщений: 430
Question Реализация возможности «Шаг назад» (отменить действие)

Здравствуйте.

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

Старый 24.01.2012, 09:58
BuKT вне форума Посмотреть профиль Отправить личное сообщение для BuKT Найти все сообщения от BuKT
  № 2  
Ответить с цитированием
BuKT
 
Аватар для BuKT

блогер
Регистрация: Dec 2010
Сообщений: 237
Записей в блоге: 5
Смотря каким образом у вас производятся "некоторые действия". Можно к каждому "конструктору" отображаемой части действия написать "деструктор", с теми же параметрами. И при каждом "совершении" действия (вызова "конструктора" с определёнными параметрами), банально кидать в массив параметры действия. При вызове "шага назад" - просто передавать соответствующему деструктору последние добавленные в массив параметры
__________________
Дебаггер не предлагать

Старый 24.01.2012, 10:39
carrotoff вне форума Посмотреть профиль Отправить личное сообщение для carrotoff Найти все сообщения от carrotoff
  № 3  
Ответить с цитированием
carrotoff
 
Аватар для carrotoff

Регистрация: May 2010
Сообщений: 543
Для таких задач решение придумали давно.
__________________
Вы грабите бедных людей. Парень со свирелью накажет вас. Хонгильдон (с)

Старый 24.01.2012, 11:08
BuKT вне форума Посмотреть профиль Отправить личное сообщение для BuKT Найти все сообщения от BuKT
  № 4  
Ответить с цитированием
BuKT
 
Аватар для BuKT

блогер
Регистрация: Dec 2010
Сообщений: 237
Записей в блоге: 5
Шаблон может и хорош, но хранить состояния, вместо того, чтобы хранить изменения состояния - мне кажется глупым.
__________________
Дебаггер не предлагать

Старый 24.01.2012, 11:10
carrotoff вне форума Посмотреть профиль Отправить личное сообщение для carrotoff Найти все сообщения от carrotoff
  № 5  
Ответить с цитированием
carrotoff
 
Аватар для carrotoff

Регистрация: May 2010
Сообщений: 543
Цитата:
Сообщение от BuKT
Шаблон может и хорош, но хранить состояния, вместо того, чтобы хранить изменения состояния - мне кажется глупым.
У меня дежавю. Похоже на холивар Git против SVN
__________________
Вы грабите бедных людей. Парень со свирелью накажет вас. Хонгильдон (с)

Старый 24.01.2012, 14:27
Stitch512 вне форума Посмотреть профиль Отправить личное сообщение для Stitch512 Найти все сообщения от Stitch512
  № 6  
Ответить с цитированием
Stitch512

Регистрация: Nov 2010
Сообщений: 150
http://www.rsdn.ru/article/dotnet/backforward.xml
Тут принципы реализации, на ActionScript перевести думаю труда не составит

Старый 24.01.2012, 18:59
Inet_PC вне форума Посмотреть профиль Отправить личное сообщение для Inet_PC Посетить домашнюю страницу Inet_PC Найти все сообщения от Inet_PC
  № 7  
Ответить с цитированием
Inet_PC
 
Аватар для Inet_PC

Регистрация: Feb 2009
Адрес: Гы...поди, найди!
Сообщений: 853
Записей в блоге: 1
Команда здесь, мне кажется, самое то.
__________________
http://www.chessmax.ru

Старый 24.01.2012, 21:02
expl вне форума Посмотреть профиль Отправить личное сообщение для expl Найти все сообщения от expl
  № 8  
Ответить с цитированием
expl

блогер
Регистрация: Feb 2006
Сообщений: 1,474
Записей в блоге: 3
Подхода тут всего 2:
- список состояний/изменений
сохраняем данные на каждом изменении и при откате разбираем switch-ами
- список комманд
при редактоировании применяем комманды, которые сами запоминают нужные данные для отката.

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


Последний раз редактировалось expl; 24.01.2012 в 21:07.
Старый 24.01.2012, 22:16
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 9  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
команд [x]

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

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


Мементо не предлагаю, т.к. он избыточен.
__________________
Воспитан в TimeZero. Работаю в Mail.ru.


Последний раз редактировалось dimarik; 24.01.2012 в 22:20.
Создать новую тему Ответ Часовой пояс GMT +4, время: 13:55.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Теги
ctrl+z , отменить действие

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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