Заполнение SharedObject большими объемами данных

Я пишу кроссплатформенную игру (Android, iOS, ПК), в которой игрок может записывать свой голос через микрофон. Это приводит к большим объемам данных даже при сжатии LZMA.

Для моего удобства я использую SharedObject. Мой вопрос: что произойдет, если я заполню его десятками мегабайт данных?

Когда я выдаю SharedObject.getLocal(xxx), он загружает все свои мегабайты именно в этот момент (медленно и заполняя память)? Или он загружает только полученные данные, например var data:* = SharedObject.getLocal(xxx).data[recordingName];

Если он не оптимизирован так, как мне нужно, возникнет ли проблема, если у меня будет другой SharedObject для каждого файла, доступ к которому осуществляется, например

var so:SharedObject = SharedObject.getLocal(recordingName);

?


person Bill Kotsias    schedule 01.12.2013    source источник
comment
ИМХО, лучше использовать быстрый кодировщик MP3, как этот: github.com /kikko/Shine-MP3-Encoder-on-AS3-Alchemy и сохраните MP3 прямо на карту. Насколько я помню, SO поддерживает только 100 тыс. данных, поэтому в этом случае он бесполезен.   -  person gMirian    schedule 01.12.2013
comment
1) Я слышал, что Shine as3 очень медленный! Мою проблему тоже не решит. 2) забыл сказать, что использую Air, и уже написал без проблем несколько мегабайт!   -  person Bill Kotsias    schedule 01.12.2013
comment
@SantgMirian SO может быть настолько большим, насколько локальная политика позволяет сайту хранить данные, проверьте в проигрывателе Flash с открытым SWF. Но все же IMHO SharedObjects - неправильный способ обработки таких данных :(   -  person Vesper    schedule 02.12.2013
comment
@BillKotsias IMO, независимо от того, как бы вы загружали десятки мегабайт данных SharedObject, память все равно будет заполнена, и приложение приостановится при загрузке хранилища с диска. Если параметры вашего локального хранилища будут неограниченными, вы сможете управлять такими большими объектами SharedObject. Это не должно быть проблемой, если вы храните каждую запись в отдельном общем объекте.   -  person Vesper    schedule 02.12.2013
comment
@BillKotsias Shinemp3Encoder - это не просто AS3, он написан на C и работает очень быстро, хотя и требует высокой загрузки процессора, уже использовал его для приложения Android и работал отлично, но я тестировал его на устройствах высокого класса, таких как Nexus 7, Galaxy S3 и Xperia Т.   -  person gMirian    schedule 02.12.2013
comment
Я также попробовал Shinemp3Encoder на мобильном телефоне, и он подходит для очень коротких аудиофайлов, но для более длинных аудиофайлов он слишком медленный. Вы также можете попробовать кодировать файлы в WAV http://www.bytearray.org/?p=1858, который работает в режиме реального времени во время записи. Я лично создал приложение на родной Dalvik Java (это было только для Android и очень просто).   -  person pulterao    schedule 02.12.2013


Ответы (1)


Данные загружаются, когда выдается SharedObject.getLocal(xxx).

Итак, в вашем случае, Билл, у вас должен быть отдельный SharedObject для каждого из ваших образцов. Таким образом, вам не придется ждать, пока все они будут загружены одновременно.

Будем надеяться, что среда выполнения соберет SharedObjects после того, как вы их использовали, и у вас больше не будет указателей на них, так что в конечном итоге они не займут всю вашу оперативную память..!

person Bill Kotsias    schedule 18.12.2013