У меня есть проект AIR, который загружает любой swf. Но когда загруженный swf отправляет SecurityError, я не могу справиться с этой ошибкой! Мой код ниже:Как обращаться с SecurityError # 2070 и # 2000 в Loader.load()
var loader:Loader = new Loader();
_loader.contentLoaderInfo.addEventListener(Event.COMPLETE, swfComplete);
_loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, swfErrors);
_loader.contentLoaderInfo.addEventListener(Event.INIT, swfInit);
_loader.contentLoaderInfo.addEventListener(Event.OPEN, swfOpen);
_loader.contentLoaderInfo.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatus);
_loader.contentLoaderInfo.addEventListener(SecurityErrorEvent.SECURITY_ERROR, swfSecurityError);
_loader.contentLoaderInfo.uncaughtErrorEvents.addEventListener(UncaughtErrorEvent.UNCAUGHT_ERROR, uncaughtErrors);
try {
_loader.load(new URLRequest('path.swf'));
}
catch(e:SecurityError) {
trace("trying handle error!");
}
function swfComplete(e:Event):void {
trace("complete");
}
function swfErrors(e:IOErrorEvent):void {
trace("swf error: " + e.toString());
}
function swfInit(e:Event):void {
trace("swf init");
}
function swfOpen(e:Event):void {
trace("swf open. this listener dispatch!");
}
function httpStatus(e:HTTPStatusEvent):void {
trace("http status: " + e.toString());
}
function swfSecurityError(e:SecurityErrorEvent):void {
trace("trying handle security error. :(");
}
function uncaughtErrorEvent(e:UncaughtErrorEvent):void {
trace("uncaught error: " + e.toString());
}
Исключение из FlashDevelop:
[Fault] exception, information=SecurityError: Error #2070: Security sandbox violation: caller file.swf cannot access Stage owned by app:/myApp.swf.
[Fault] exception, information=SecurityError: Error #2000: No active security context.
Проблема заключается в том, что моя программа завершает работу, и я не могу поймать эти ошибки безопасности. Как я могу предотвратить закрытие моей программы?
Благодарим за ответ. Я попробовал loadBytes как решение, потому что другие, которые я не могу реализовать на практике. Я сделал это, но есть проблема. Я загружаю серию файлов, которые позже используют «unloadAndStop», чтобы выгрузить их из памяти, однако эта команда не удаляет все байты из загруженного файла. Возможно, это связано с определениями классов, встроенных в мой основной swf. Случается, что моя программа увеличивает потребление памяти и сбои. Как я могу это решить? – bio
Вы говорите о сотнях (или, по крайней мере, десятках) мегабайт? Вы можете попробовать загрузить их все сразу и посмотреть. Или вы можете описать, на каком этапе загрузки загружен контент, и попытаться перепрограммировать его, чтобы он не нуждался в доступе к сцене или какой-либо среде, таким образом загружая и выгружая их обычным способом. – Organis