我有一些通过 HttpHandler 打开 SWF 文件的 AS2 代码。
我试图让程序识别何时缺少请求的文件。
我的第一次尝试涉及使用 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);
}
一点帮助?