我有一些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);
}
很少帮忙?
答案 0 :(得分:1)
您的服务器功能如何抛出错误?确保它返回实际的HTTP错误代码,如404或503等。如果它返回HTTP状态代码200并带有错误作为文本消息,则Flash不知道这是一个错误。它只看到状态200并认为负载正常,并尝试将数据加载为flash电影。