HttpHandlerを介してSWFファイルを開くAS2コードがあります。
要求されたファイルが欠落していることをプログラムに認識させようとしています。
私の最初の試みは、LoadVarsと「load」を使用し、ファイルが正常にロードされた場合にのみloadMovieを呼び出すことでした(ここのどこかでテクニックを見つけました)。ただし、ファイルが存在する場合、HttpHandlerのProcessRequest関数が2回呼び出されていることがわかりました。理にかなっています-ロード用に1回、loadMovie用に1回。
現在、代わりにMovieClipLoaderを使用しています(この手法もここにあります)。この方法では、ファイルが見つかったかどうかに関係なく、ProcessRequestが1回だけ呼び出されます。しかし、私の問題は、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);
}
少し助け?