Проблемы с загрузкой встроенных SWF-файлов в приложение air

У меня есть файл игры, который я создаю с помощью Flash CS 5.5. У меня есть другой файл SWF, который является файлом подсказки, который я встроил в этот файл игры. Он отлично работает в ПК. У меня возникли проблемы при попытке загрузить этот игровой файл со встроенным SWF-файлом. Я получил следующую ошибку: SecurityError: Ошибка № 3226: невозможно импортировать SWF-файл, когда LoaderContext.allowCodeImport имеет значение false. Может кто-нибудь сказать мне, почему это происходит?

2 ответа

Решение

Я полагаю, вы работаете с Adobe Air для мобильных устройств на вашем устройстве Android. В эфире для мобильных устройств существуют дополнительные ограничения на загрузку внешних SWF-файлов, особенно если они содержат байт-коды (ActionScript). Поскольку ваш вторичный SWF-файл содержит код ActionScript для себя, вы не можете загрузить его в свое мобильное эфирное приложение без явного разрешения безопасности.

AS3 использует Loader неявно, когда вы создаете экземпляры классов, ссылающихся на ваши встроенные SWF-файлы, и они загружаются с опцией по умолчанию, которая устанавливается в эфир для мобильной среды выполнения.

Вы можете загрузить их с ручной загрузкой, создав Loader а также LoaderContext пример самостоятельно.

var ldr:Loader = new Loader();
var lc:LoaderContext = new LoaderContext(false, ApplicationDomain.currentDomain);
lc.allowCodeImport = true;
ldr.load(new URLRequest("YOUR_FILE_PATH"), lc);

Также обратите внимание, что в iOS, даже если allowCodeImport установлен в true, вы не можете загружать внешние SWF с кодами любым способом.

Для получения дополнительной информации: http://blogs.adobe.com/airodynamics/2012/11/09/packaging-and-loading-multiple-swfs-in-air-apps-on-ios/

Попробуйте этот вид контекста:

var loaderContext: LoaderContext = new LoaderContext();
loaderContext.allowLoadBytesCodeExecution = true; 
swfLoader.loaderContext = loaderContext;
Другие вопросы по тегам