|
|
|||||
Регистрация: May 2009
Сообщений: 26
|
Выгрузка/перезагрузка swf под iOS
Моя игра содержит очень много графического и звукового контента. А на iOS, насколько я знаю, весьма жесткие требования по использованию памяти. Но одновременно, весь контент в памяти и не нужен. Логичное решение - разделить контент на группы, рассовать по разным swf и перед запуском уровня загружать только те, что нужны. После прохождения уровня освобождать память. Провел эксперимент на PC и Android. Все работает: постоянные загрузки/выгрузки сначала заполняют память, но в какой-то момент сборщик мусора прочухивает и все остатки прибирает, освобождая память до начальных величин. В общем все ОК.
Но в документации Adobe по AIR есть кое-что про особенности работы iOS: http://help.adobe.com/ru_RU/as3/dev/...0204-7e13.html В разделе "Загрузка SWF-файлов в среде AIR для iOS" есть такой пунктик: - Загрузка, выгрузка и повторная загрузка SWF-файла невозможна. При попытке выполнить эти действия возникнет ошибка. Э? Там, конечно весь документ написан витиевато достаточно. Неужели в AIR под iOS нельзя организовать загрузку/выгрузку? Может я чего-то не так понял? P.S. У меня пока нет iOS устройства, поэтому пока провести эксперимент не могу. |
|
|||||
Регистрация: Dec 2010
Адрес: Ярославль
Сообщений: 1,255
|
Вариант с хранением ресурсов не в swf рассматривали?
Обычно так и делают: графика в атласах, звуки/конфиги/прочее отдельными файлами. |
|
|||||
Регистрация: May 2009
Сообщений: 26
|
Графика в основном в виде анимаций (MovieClip), причем не тривиальных. Статических картинок почти нет.
|
|
|||||
Регистрация: Dec 2010
Адрес: Ярославль
Сообщений: 1,255
|
В таком виде с производительностью всё в порядке?
http://gafmedia.com/ - этот сервис перегоняет мувиклипы в текстурные атласы, правда придётся всё на starling переводить. Не знаю, можете ли вы себе позволить подобные манипуляции. |
|
|||||
Регистрация: May 2009
Сообщений: 26
|
У меня проект - фактически является сиквелом-портом на мультиплатформу PC игры. Т.е. достаточно сложные и богатые анимации.
Я пробовал Stage3D (а Starling его использует), делал стресс-тесты и столкнулся с парой проблем: 1. PAPI плеер в Google Chrome весьма тормознутый и, судя по всему, и Adobe и Google упорно игнорируют проблему. (проблеме уже год наверно). 2. Испытывал мобильную версию стресс-теста на Samsung Galaxy S2 - очень низкий FPS на мобиле. Примечание: использовались атласы изначально. Как это не странно, чистый Flash (MovieClip) в мобильной версии в целом показал себя гораздо производительнее нежели Stage3D (хотя от некоторых эффектов придется отказаться или переделать) Правда, я допускаю, что "просто не умею готовить" Stage3D и еще проведу несколько экспериментов с чистым Stage3D и со Starling. Но в случае, что всетаки придется использовать чистый MovieClip хотелось узнать про подгрузку/выгрузку в iOS Добавлено через 1 час 54 минуты Ого! Я действительно "не умею готовить". Очевидно, мобильная видеосистема работает не так как DirectX на PC. Я изменил алгоритмы работы с VertexBuffer и IndexBuffer и мобильная версия стресс-теста стала уверенно показывать максимально возможные 60 FPS! (для мобильной версии и 30 достаточно). Не знаю правда, удастся ли довести производительность Chrome до нормальной... Тем не менее, главный вопрос остается в силе! Прояснить его может оказаться весьма полезным. |
|
|||||
Регистрация: May 2009
Сообщений: 26
|
Похоже нашел ответ вот в этом документе:
http://blogs.adobe.com/airodynamics/...r-apps-on-ios/ Там есть фраза: Цитата:
|
|
|||||
Регистрация: Sep 2005
Сообщений: 950
|
Я делал вот так
_loader = new Loader(); if (Capabilities.manufacturer.indexOf("iOS") != -1) { url = url +"?"+(new Date ()).getTime () } _req = new URLRequest("pic/"+url) var loaderContext:LoaderContext = new LoaderContext(false, ApplicationDomain.currentDomain, null); loaderContext.allowCodeImport = true; _loader.load(_req,loaderContext) _loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler); |
Часовой пояс GMT +4, время: 10:28. |
|
« Предыдущая тема | Следующая тема » |
Теги |
air , ios |
|
|