AS2: LoadMovieClip.onError, похоже, не ловит некоторые ошибки - PullRequest
1 голос
/ 29 марта 2010

У меня есть некоторый код 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);
}

Маленькая помощь?

1 Ответ

1 голос
/ 29 марта 2010

Как ваша серверная функция выдает ошибку? Убедитесь, что он возвращает фактический код ошибки HTTP, например 404 или 503 или что-то еще. Если он возвращает код состояния HTTP 200 с ошибкой в ​​виде текстового сообщения, то Flash не знает, что это ошибка. Он просто видит состояние 200 и думает, что загрузка в порядке, и пытается загрузить данные как флэш-фильм.

...