У меня есть некоторый код AS2, который открывает файл SWF через HttpHandler.
Я пытаюсь заставить программу распознавать, когда запрашиваемый файл отсутствует.
Моя первая попытка была связана с использованием LoadVars и «load», и только вызовом loadMovie, если файл успешно загружен (методика где-то здесь). Однако я обнаружил, что функция ProcessRequest в HttpHandler вызывается дважды, когда файл существует. Имеет смысл - один раз для загрузки, один раз для loadMovie.
Теперь я использую MovieClipLoader (также нашел эту технику здесь). Этот способ вызывает ProcessRequest только один раз, независимо от того, найден файл или нет. Но моя проблема в том, что функция onLoadError работает только тогда, когда я даю ей неверный URL. Если я даю ему хороший URL, который передает неверное имя файла обработчику, обработчик выдает ошибку, но моя функция onLoadError, похоже, не распознает, что есть проблема - я просто получаю пустую область, где должно отображаться сообщение об ошибке до.
Вот соответствующий код AS2:
function CheckFileExists(inFile) {
var mclListener:Object = new Object();
mclListener.onLoadError = function(target_mc:MovieClip, err:String){
if(err=="URLNotFound")
{
target_mc.createTextField("error_txt", 1, 0, 0, 100, 20);
target_mc.error_txt.autoSize = "left";
target_mc.error_txt.text = "URL not found: \n\t" + target_mc._url;
}
else //I would expect this block to handle the error, since the URL is good.
{
target_mc.createTextField("error_txt", 1, 0, 0, 100, 20);
target_mc.error_txt.autoSize = "left";
target_mc.error_txt.text = "some other problem: \n\t" + target_mc._url;
}
}
var mcl:MovieClipLoader = new MovieClipLoader();
mcl.addListener(mclListener);
var mc:MovieClip = this.createEmptyMovieClip("mc", this.getNextHighestDepth());
mcl.loadClip(inFile, mc);
}
Маленькая помощь?