Ошибки безопасности генерируются, когда операция не разрешена в изолированной программной среде безопасности, в которой запускается приложение. Это может иметь несколько причин, и не в последнюю очередь это будет связано с попыткой доступа к локальному файлу из приложения, скомпилированного с * 1001. *.
EDIT
Перечитывая ваш вопрос, я столкнулся с наиболее вероятной причиной, но в любом случае оставлю другую информацию - она может пригодиться другим пользователям.
Вы загружаете галерею изображений, в которую , в свою очередь, загружаются другие файлы (XML) , но внешний SWF-файл был скомпилирован с параметром use-network
, а ваш FLA автоматически запускается как приложение local-trusted
, когда экспортируется из Flash IDE. Это, конечно, нарушение песочницы.
Вы можете проверить это, запустив SWF-файл с веб-сервера с действующей политикой безопасности - если я правильно понимаю, ваше приложение должно работать.
Кстати, если вы добавите прослушиватель событий в contentLoaderInfo
для обработки ошибок безопасности, вы можете предотвратить аварийное завершение работы вашего приложения.
END EDIT
Ошибка может быть связана с небольшой задержкой между созданием загрузчика и инициализацией его контекста безопасности. Подробнее см. в этом блоге .
Если это так, вы должны быть в состоянии правильно избавиться от ошибки, отложив запрос на загрузку с помощью setTimeout()
или переместив объявление вашего загрузчика за пределы функционального блока, т.е.
var mLoader:Loader = new Loader();
function startLoad() {
var mRequest:URLRequest = new URLRequest("../xml_gallery_2_852/XMLGALLERY2.swf");
mLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onCompleteHandler);
mLoader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, onProgressHandler);
mLoader.load(mRequest);
}
Объявление вашего загрузчика в качестве временной переменной в любом случае «грязно»: ссылка потеряна, но прослушиватели событий, добавленные вами в contentLoaderInfo
, сохраняют его в памяти независимо от того, нужен он по-прежнему или нет. Это может привести к серьезным утечкам памяти, если вы собираетесь загрузить более одного файла. Вы всегда должны сохранять ссылку на ваш загрузчик, если вы хотите правильно утилизировать загруженный контент, когда он больше не нужен (с помощью Loader.unload()
), и сделать сам загрузчик доступным для сборки мусора (путем удаления прослушивателей событий и явного установка ссылки на null
после использования).