Загрузите и перезагрузите внешний SWF в AIR для iOS
Я нашел несколько сведений о том, как загрузить один или несколько внешних SWF-файлов, упакованных с моим приложением AIR iOS. Фактический рабочий код:
var myUrlRequest:URLRequest = new URLRequest(mySWF);
var myLoaderContext:LoaderContext = new LoaderContext(false, ApplicationDomain.currentDomain, null);
var loader: Loader = new Loader();
loader.load(myUrlRequest, myLoaderContext);
Object(root).MK.addChild(loader)
Он работает на устройствах Android и на ПК с Windows, но на iOS загружает внешние SWF-файлы только в первый раз. В моем проекте у меня есть несколько кнопок, которые загружают внешний SWF, но каждая кнопка работает только в первый раз.
Любая идея? Это кажется очень бесполезным, если я не могу перезагрузить SWF.
4 ответа
У меня были проблемы с загрузкой SWF, даже без кода во второй раз. Решение, которое я нашел, зависело от того, был ли код из области приложения (упакован вместе с приложением) или загружен извне (либо из Интернета, либо загружен в папку caches). Я написал расширенный пост здесь, если вам интересно: http://www.eqsim.com/blog/?p=400 В двух словах, вот мой код для установки пути:
var moduleDirectoryPath = "/modules/";
if (externalContent == FROM_CACHE) {
moduleDirectoryPath = File.cacheDirectory.url + moduleDirectoryPath;
} else if (externalContent == FROM_WEB) {
moduleDirectoryPath = "http://our-online-content.com" + moduleDirectoryPath;
}
тогда вот мой код для подготовки пути, если SWF-файл из области приложения или иным образом (кеш или веб):
if (loadFromApp) {
path = moduleDirectoryPath + module_folder + "/" + module + "?nf="+getTimer();
} else {
path = moduleDirectoryPath + module_folder + "/" + module;
}
Наконец, мои заявления о загрузке:
request = new URLRequest(path);
request.cacheResponse = false;
request.useCache = false;
_lc = new LoaderContext(false, ApplicationDomain.currentDomain, null);
moduleLoader.load(request, _lc);
и теперь я могу загрузить SWF и перезагрузить их (что более важно). Конечно, в SWF нет байт-кода.
Хороший способ справиться с этим - сначала загрузить SWF-файлы в отдельные фрагменты видеороликов, а затем, когда потребуется "загрузить" их в любое время после этого, просто показать те фрагменты видеороликов, в которые уже загружены SWF-файлы.
Если вы не можете загрузить что-то во второй раз, возможно, было бы лучше просто кэшировать это и иметь смысл загружать его только один раз?
Вы не можете загрузить SWF-файл, который содержит какой-либо код ActionScript ByteCode (ABC), затем выгрузить его и перезагрузить на iOS. Если вы попытаетесь сделать это, среда выполнения выдаст ошибку 3764.