#flash #actionscript-3
#flash #actionscript-3
Вопрос:
я создаю редактор уровней для своей игры, и мне нужно сохранить данные tilemap (массив 120×120 uint) и данные о персонажах (тип персонажа, положение, поворот, статистика и т.д.) в файл .bin. Как я могу это сделать? Я знаю, что могу сделать это с помощью XMLS, но это не подходит для сохранения tilemaps… Спасибо
Ответ №1:
То, что вы ищете, — это функция сохранения FileReference
класса. Смотрите здесь: http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/net/FileReference.html#save ()
Это работает только в Flash Player 10 и требует взаимодействия с пользователем. (Откроется диалоговое окно сохранения) Эти ограничения существуют по соображениям безопасности, если вы хотите иметь возможность сохранять fly напрямую (без взаимодействия с пользователем), вам придется использовать AIR, см. FileStream
Ссылку на класс для этого: http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/filesystem/FileStream.html
Чтобы сохранить собственные объекты Flash во внешний файл и загрузить их снова, вам нужно сначала записать данные в ByteArray
. ByteArray
имеет два метода (writeObject amp; readObject), которые делают это тривиальным. смотрите здесь: http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/utils/ByteArray.html
Удачи.
Ответ №2:
Если это веб-игра, запускаемая в веб-браузере, и вы хотите сохранить данные в системе пользователя (не на веб-сервере), я могу предложить два варианта:
Если можно использовать Flash Player 10, вы можете сохранять и загружать данные в локальные файлы и из них по запросу пользователя, например нажатием кнопки (не произвольно из любого места вашего кода) и через стандартное диалоговое окно файла. Смотрите FileReference.save().
Вы также можете хранить данные в локальном SharedObject. Данные могут быть прочитаны и записаны без взаимодействия с пользователем или диалога с файлом. Затем Flash Player сериализует данные за вас, но я думаю, вы должны иметь возможность сохранять данные того типа, который вы описали таким образом.