Ошибка безопасности SWF: ошибка № 2000: нет активного контекста безопасности - PullRequest
2 голосов
/ 21 февраля 2011

Привет У меня есть флеш-галерея изображений, которая работала очень хорошо, пока несколько дней назад она не перестала загружать изображения. отладчик выдает эту ошибку:

SecurityError: Error #2000: No active security context.

Может кто-нибудь объяснить, в чем может быть причина?

Ответы [ 6 ]

4 голосов
/ 05 октября 2011

Я столкнулся с этой проблемой при работе с загрузкой изображений, где путь находится во внешнем XML-файле.Итак ... Я загружаю XML, получаю из него путь, но потом у меня возникла проблема: я загружал более 30 изображений, и ошибка появлялась только 6 раз, так что ... Я понятия не имел, где находятся плохие файлы.

Если вы хотите, чтобы вспышка выходила, введите больше информации, чем просто:

SecurityError: Error #2000: No active security context.

Добавьте этот прослушиватель событий в ваш Loader:

loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);

и, наконец, эту функцию:

protected function ioErrorHandler(e:IOErrorEvent):void{
    trace(e.text);
}

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

Error #2035: URL Not Found. URL: file:////Volumes/Macintosh%20HD/Users/cleanshooter/Documents/Website%20/here/there/everywhere/30805/filename.jpg
3 голосов
/ 06 июня 2011

Я сталкивался с этой проблемой раньше, окончательный вывод был связан с неверным путем к изображению или именем

2 голосов
/ 21 февраля 2011

Изменились ли расширения ваших изображений, возможно, с .jpg на .JPG или что-то еще?

Обычно это вызывается, если есть проблема с вашим внешним носителем. Вот обходной путь для этого, но я обычно пытаюсь решить, а не уйти.

setTimeout( function():void{fileReference.load();}, 1);

Надеюсь, это поможет.

1 голос
/ 10 сентября 2011

Вам нужно обработать ошибку:

loader.contentLoaderInfo.addEventListener(HTTPStatusEvent.HTTP_STATUS, onHTTPError);
protected function onHTTPError(e:HTTPStatusEvent):void{
     trace("HTTPError"+e.status);
}

Таким образом, она обработает ошибку и будет работать нормально.

1 голос
/ 03 мая 2011

В ответ на встречный ветер:


В AS3 необходимо импортировать flash.utils.setTimeout.Синтаксис для setTimeout: setTimeout(A, B, ...rest);

, где B - функция, вызываемая впоследствии, A - задержка в мс (например, 1000 в секунду), а C - любое количество параметров, которое необходимо предоставить дляфункция, разделенная запятой.

Например

import flash.utils.setTimeout;
// package, etc
//main function
setTimeout(respond, 500, true, false);
private function respond(A : Boolean, B : Boolean) : void {
   var result : Boolean = A == B;
   trace(result);
}
1 голос
/ 08 марта 2011

Я столкнулся с этой проблемой и использовал приведенный выше пример setTimeout, но для немного другой цели.Я звонил в php-скрипт, который попал в Twitter и получил ту же проблему безопасности в проигрывателе отладки Flash.Я просто хотел добавить свой пример, который основан на вышеупомянутом, чтобы показать, как вы можете использовать этот «обходной путь» для URLLoader, а также fileReference.

var myXMLLoader:URLLoader = new URLLoader(); 

var urlStr:String = "http://www.yourdomain.com/php/twitter.php"; 
var myVariables:URLVariables = new URLVariables();
myVariables.twitterID = "yourtwitterID";

var myURLRequest:URLRequest = new URLRequest(urlStr)
myURLRequest.data = myVariables;

setTimeout(function():void {  myXMLLoader.load( myURLRequest ); }, 1);

myXMLLoader.addEventListener(Event.COMPLETE, onXMLLoadHandler);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...