AS3. SecurityError: Ошибка 2000 при простой загрузке внешнего jpg - PullRequest
3 голосов
/ 08 июля 2011

Когда я пытаюсь загрузить внешнее изображение в той же папке с объектом Loader, я получаю ошибку SecurityError: Error #2000: No active security context.
Мой код:

var urlImg = String("img.jpg");
var imgLoader:Loader = new Loader();
var _lInfo:LoaderInfo = imgLoader.contentLoaderInfo;
_lInfo.addEventListener(Event.COMPLETE, handleComplete);
imgLoader.load(new URLRequest(urlImg));

function handleComplete(evt:Event):void{
    trace("handleComplete");
}

Почему это не работает?

Ответы [ 6 ]

3 голосов
/ 08 июля 2011

Попробуйте изменить вызов на загрузку:

imgLoader.load(new URLRequest(urlImg));

Чтобы сделать это вместо этого:

var context:LoaderContext = new LoaderContext();
context.applicationDomain = ApplicationDomain.currentDomain;

imgLoader.load(new URLRequest(urlImg), context);

В противном случае вы можете попробовать изменить свойство use-network при компиляции с помощью mxmlc.В Flash Pro в разделе параметров публикации найдите «Безопасность локального воспроизведения» и переключайтесь между «Доступ только к локальным файлам» или «Доступ только к сети».

Также не забудьте проверить, что ваше изображение действительнов правильной папке с именем «img.jpg», а не «image.jpg», «img.JPG» или чем-то в этом роде.

1 голос
/ 08 июля 2011

Исключение SecurityError генерируется, когда имеет место какой-либо тип нарушения безопасности.

Примеры ошибок безопасности:

  • Несанкционированный доступ к свойству или вызов метода выполняются через границу изолированной программной среды безопасности.
  • Была предпринята попытка получить доступ к URL, не разрешенному в изолированной программной среде безопасности.
  • Была предпринята попытка соединения через сокет с неавторизованным номером порта, например, порт выше 65535.
  • Была предпринята попытка получить доступ к камере или микрофону пользователя, и запрос на доступ к устройству был отклонен пользователем.

От: http://www.actionscripterrors.com/?p=409

Можете ли вы попробовать с этим кодом:

var loader:Loader = new Loader();
var context:LoaderContext = new LoaderContext();
context.checkPolicyFile = false;

loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete);
loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, onError);

var request:URLRequest = new URLRequest(imageUrl);
loader.load(request, context);
0 голосов
/ 06 марта 2013

Также обязательно следите за вашими правилами адресации.адреса, которые работают в html-коде, могут не работать в actionsrcipt.Особенно в том, что касается подпапок.по какой-то причине это часто сообщается как ошибка безопасности, а не ошибка URL not found.

0 голосов
/ 08 июля 2011

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

// bad code
imageObj.source = partialURL1 + partialURL2 + partialURL3;

//good code
var someURL:String = partialURL1 + partialURL2 + partialURL3
imageObj.source = someURL;
0 голосов
/ 08 июля 2011
var urlImg = String("img.jpg");
var imgLoader:Loader = new Loader();
var _lInfo:LoaderInfo = imgLoader.contentLoaderInfo;
_lInfo.addEventListener(Event.COMPLETE, handleComplete);
imgLoader.load(new URLRequest(urlImg));

function handleComplete(evt:Event):void {
    trace("handleComplete");
    var mc:MovieClip = new MovieClip();
    addChild(mc);
    mc.addChild(imgLoader.content);
}

работает нормально.

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

0 голосов
/ 08 июля 2011

На самом деле это работает для меня.Я получил только предупреждение в первой строке.

Вы получили:

var urlImg = String("img.jpg")

Но его следует заменить на:

var urlImg:String = "img.jpg";

Также убедитесь, что файл находится втот же каталог, что и ваш SWF.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...