Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Реализация сохранения игры: SharedObject или FileReference (http://www.flasher.ru/forum/showthread.php?t=135576)

Denis_ex 26.01.2010 18:48

Реализация сохранения игры: SharedObject или FileReference
 
В первый раз делаю однопользовательскую игру, которая будет иметь сохранение уровней и пр. Хотел бы спросить опытных игровых флеш разработчиков, что лучше и безопаснее (чтобы, как можно меньше было проблем с не сохранением игры) юзать SharedObject или FileReference?
При исп. SharedObject юзер может отключить локальное сохранение.
А при FileReference, как юзер может ограничить?
Объем сохранения - всего несколько чисел. Хотелось бы не иметь проблем с несохранением данных, как в игре онлайн, так и оффлайн.
Поискал на форуме, вроде многие советуют именно SharedObject…

iflamberg 26.01.2010 19:05

ни разу не видел, чтобы пользователь выключал SharedObject. FileReference никак не ограничешь, просто можно нажать "Отмена" на предложение сохранить файл.
Вообще ни разу не видел, чтобы сохранение организовывали через FileReference.

Denis_ex 26.01.2010 19:14

а нужно ли использовать для явной записи данных на диск юзера метод flush()?

Psycho Tiger 26.01.2010 19:48

Да, иначе записи не будет. Если мы о SharedObject говорим.

Denis_ex 27.01.2010 15:52

я попробовал протестировть сохранение:
запустил программу со сл. кодом:

Код:

var sharedObject:SharedObject = SharedObject.getLocal("savegameN7");
sharedObject.data.scn = 8;

И в папке создался объект I:\Documents and Settings\Admin\Application Data\Macromedia\Flash Player\#SharedObjects\***\savegameN7.sol с сохраненным значением: 8.
Странно, но при этом я не использовал sharedObject.flush(); для записи на жесткий диск, а запись, как видно выше произошла?
Я предполагал, что БЕЗ функции sharedObject.flush(); общий объект создастся в оперативной памяти и при закрытии флешки просто уничтожится без записи на жесткий диск...
Может я не совсем все верно предполагаю?
Cреда разработки CS4 + FlashDevelop (AS3).

udaaff 27.01.2010 16:06

Цитата:

If you don't use this method (flush(), в смысле), Flash Player writes the shared object to a file when the shared object session ends — that is, when the SWF file is closed, when the shared object is garbage-collected because it no longer has any references to it, or when you call SharedObject.clear() or SharedObject.close().
.....

VVall 27.01.2010 16:15

flush всюду нужен для принудительного сброса данных из кэша (дискового) на носитель. Без него сброс данных происходит обычно при закрытии файла, или как в цитате выше.

Denis_ex 27.01.2010 16:27

А т.е. разница в том, что при исп. flush() - НЕМЕДЛЕННО записывает постоянный локальный общий объект в локальный файл. А если не юзать flush(), то записывает в файл, только после закрытия флешки, вызова методов clear(), close(), потери указателя и пр.

Добавлено через 34 минуты
Большое спасибо всем.


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

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