Загрузите и перезагрузите внешний 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.

Другие вопросы по тегам