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

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

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

Регистрация: Oct 2006
Сообщений: 2,283
По умолчанию работают ли флэш и js в разных потоках?

Храню игровой стейт в sharedObject+при любом удобном случае сливаю его на серв.На старте приложения проверяю был ли стейт слит на серв и если нет - сливаю его.Это такая защита от потери стейта в случае аварийного завершения флэшки(+обработка ситуации если юзер просто закрыл вкладку).В некоторых случаях стейт может распухнуть довольно сильно.Соответственно при закрытии вкладки флэш не успевает его целиком скинуть в SO и при след. загрузке этот покоцаный стейт пишется на серв о чем и свидетельствуют серверные логи.
Собственно вопрос если я в js пропишу
Код AS1/AS2:
window.onbeforeunload = function(e) {
..
swf.someFlashCallback();
return null;
}
это приостановит закрытие вкладки до момента пока флэш не закончит запись в SO?

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

блогер
Регистрация: Dec 2008
Адрес: г. Чебоксары
Сообщений: 2,259
Записей в блоге: 6
Ну в конечном итоге это не решит проблемы полностью. Даже если вкладка не закроется, пока не дождется выполнения колбека. Что если, будет закрыт браузер? Или компьютер вырубится? Вы все равно можете получить покорцанный стейт.

Предлагаю решать проблему по другому, как например в десктопных играх. Во время сохранения показывать значок, что вот сейчас лучше не вырубать. Сохранять стейты отдельно, каждый раз новый, подписывая датой сохранения. А на сервер отправлять последний корректный. Не забудьте удалять слишком старые и не нужные.
__________________
Дети не должны знать о своих родителях

Старый 02.08.2015, 12:57
undefined вне форума Посмотреть профиль Отправить личное сообщение для undefined Найти все сообщения от undefined
  № 3  
Ответить с цитированием
undefined

Регистрация: Oct 2006
Сообщений: 2,283
Цитата:
Что если, будет закрыт браузер? Или компьютер вырубится?
В случае аварийного завершения юзеру будет легче объяснить почему его данные пропали.Закрытие же вкладки к таким сценариям никак не отнесешь.
Цитата:
Во время сохранения показывать значок, что вот сейчас лучше не вырубать. Сохранять стейты отдельно, каждый раз новый, подписывая датой сохранения.
Со значком идея здравая.Как я и говорил стейт может быть приличных размеров.Их и так 30 штук хранится для 30-ти неоконченных игр.Так что все впритык. Не хотелось бы вылазить за рамки дефолтных 100 КБ.

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

блогер
Регистрация: Dec 2008
Адрес: г. Чебоксары
Сообщений: 2,259
Записей в блоге: 6
  • У каждого браузера может быть своё, уникальное мнение, на счёт работы функций, ожидающей завершения.
  • Эту функцию часто используют всякие недобросовестные сайты.
  • Работу вкладок или браузера, могут завершать и не штатными способами, например, через убийство процесса в дисптечере задач. (Как я)
Это я к тому, что использовать функцию ожидания завершения можно и даже нужно, но полагаться на неё нельзя.
Вы в любом случае можете получать покорцанные файлы сохранении. Если у вас, в этом случае пользователь теряет весь свой прогресс - это очень плохо. В случае нескольких копий, игроком будет потерян прогресс только с последнего сохранения, что уже приемлемо.

Функция ожидания завершения уменьшит количество сбоев сохранении, но не предотвратит их полностью.

Добавлено через 15 минут
Если уж вы решили использовать локальное хранилище во время оффлайн работы, сообщите об этом пользователю, когда места будет не хватать. Пользователь выделит больше места, тут никаких проблем. К тому же, пользователь будет информирован о том, как работает ваше приложение и для него не станет сюрпризом, если все его данные вдруг пропадут, когда он решит почистить систему от мусора.
__________________
Дети не должны знать о своих родителях

Старый 02.08.2015, 14:49
undefined вне форума Посмотреть профиль Отправить личное сообщение для undefined Найти все сообщения от undefined
  № 5  
Ответить с цитированием
undefined

Регистрация: Oct 2006
Сообщений: 2,283
Цитата:
Если уж вы решили использовать локальное хранилище во время оффлайн работы
локальное хранение - это просто страховка, а не режим работы.Работа с сервером всегда идет фоном.Порешили периодически сливать стейт на сервер. Как начнет сервер заваливаться - увеличим период автосейва.Не идеально конечно,но должно защитить от покоцаных сейвов

Создать новую тему Ответ Часовой пояс GMT +4, время: 17:02.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

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

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


 


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


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