2010-08-25 2 views
2

Я делаю Flash-головоломку. Когда пользователь загружает игру, ему нужно спросить, следует ли возобновить игру из последнего состояния (если оно существует). У меня есть система сериализации, но мне нужно убедиться, что загруженное состояние, безусловно, является последним состоянием.Событие Flash/AS3 «Shutdown» или «close»?

Одним из решений является сохранение состояния до SharedObject при каждом изменении состояния (когда игрок совершает переход). Однако состояние игры иногда включает обратный отсчет, поэтому мне пришлось бы постоянно (или периодически) сохранять состояние, чтобы сохранить его. Я предполагаю, что это приемлемо, но похоже kludgey.

Есть ли какие-либо события, которые срабатывают при закрытии swf? Или у кого-нибудь еще есть еще одно элегантное решение?

(я не использую AIR, но решения, требующие AIR оценены.)

Edit: Еще один важный момент в том, что я не могу иметь контроль над вложением HTML для игры, так как это может быть синдицированы многие сайты. Поэтому решения, связанные с javascript, не идеальны.

ответ

1

Он-близко событие звучит правильное решение, но мне интересно, если вы могли бы «разбить» свою сериализацию? то есть сохранить полное состояние головоломки при каждом перемещении, но также иметь вторичное «легкое» состояние для вашего обратного отсчета (или чего-либо подобного), которое может обновляться каждый раз, когда изменяется обратный отсчет.

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

+0

Вместо события выключения, я думаю, вы правы в разделении сериализации. Подумайте об этом, если моя существующая сериализация слишком тяжелая для запуска каждую секунду. ура – aaaidan

0
+0

Закрыть, но не совсем то, что я ищу, я думаю. Я не хочу предупреждать игрока о том, чтобы вручную сохранить состояние игры, когда они пытаются закрыть окно, я хочу, чтобы он был тихим, автоматическим (и надежным). – aaaidan

2

Если вспышка размещаются на HTML странице, вы можете использовать «Окно закрытия» уведомление о событии на огнь сообщения в ваш объект Flash-либо с помощью старого-SKOOL GetVariable() или новых Stylee FlashCall().

Если вы действительно сможете сохранить состояние до уничтожения объекта Flash, это еще один вопрос ... вы всегда можете сделать (зло): «Вы уверены, что хотите закрыть/перейти от этого окна?» что некоторые сайты используют.

Handling DOM Events in Flex

HTML 5 events

+0

Ммм, я думаю, что это хорошее возможное решение, но игра может быть размещена на html, который я не контролирую. Возможно, я не могу запросить, чтобы HTML содержал такой код. – aaaidan

Смежные вопросы