AS2:LoadMovieClip.onError似乎没有发现一些错误

时间:2010-03-29 18:24:39

标签: flash actionscript-2 onerror moviecliploader

我有一些AS2代码可以通过HttpHandler打开SWF文件。

我正在尝试让程序识别所请求的文件何时丢失。

我的第一次尝试涉及使用LoadVars和“加载”,并且只有在文件成功加载时才调用loadMovie(在这里找到技术)。但是,我发现当文件存在时,HttpHandler中的ProcessRequest函数被调用两次。有意义 - 一次用于加载,一次用于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 个答案:

答案 0 :(得分:1)

您的服务器功能如何抛出错误?确保它返回实际的HTTP错误代码,如404或503等。如果它返回HTTP状态代码200并带有错误作为文本消息,则Flash不知道这是一个错误。它只看到状态200并认为负载正常,并尝试将数据加载为flash电影。