HttpHandler를 통해 SWF 파일을 여는 AS2 코드가 있습니다.AS2 : LoadMovieClip.onError가 일부 오류를 catch하지 않는 것 같습니다.
요청한 파일이없는 경우 프로그램이 인식하도록하려고합니다.
첫 번째 시도는 LoadVars와 "load"를 사용하고 파일이 성공적으로로드 된 경우에만 loadMovie를 호출하는 것이 었습니다 (여기서 기술을 발견했습니다). 그러나 HttpHandler의 ProcessRequest 함수가 파일이 존재할 때 두 번 호출되는 것을 발견했습니다. 로드시 한 번, loadMovie 용으로 한번.
이제 MovieClipLoader를 대신 사용합니다 (이 기술을 여기에서 발견했습니다). 이 방법은 파일이 있는지 여부를 한 번만 ProcessRequest를 호출합니다. 하지만 내 문제는 onLoadError 함수가 잘못된 URL을 제공 할 때만 작동한다는 것입니다. 처리기에 잘못된 파일 이름을 전달하는 URL을 제공하면 처리기에서 오류가 발생하지만 onLoadError 함수는 문제가 있음을 인식하지 못하는 것 같습니다. 오류 메시지가 표시되어야하는 빈 영역이 생깁니다. 쪽으로.
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);
}
작은 도움 :
여기에 관련 AS2 코드입니까?
catch 블록에서 "파일을 찾을 수 없습니다 ..."예외가 발생하지만 아무 것도하지 않습니다. 어떤 이유로 든 잘못된 URL로 AS2 onLoadError 함수에서 오류를 트리거하는 데 충분하지만 잘못된 파일 이름으로는 충분하지 않습니다. 내 오류 처리 기술이 부족합니다. 원하는 HTTP 오류 코드를 반환하는 방법은 무엇입니까? 어떻게 든 그것을 HttpContext.Response에 써야합니까? 도움 주셔서 감사합니다. –
이것은 (catch 블록에서) 트릭을 수행하는 것으로 보입니다. context.Response.StatusCode = 404; "catch (Exception ex)"로 들어오는 오류 유형을 식별하고 이에 따라 상태 코드를 설정하는 좋은 방법이 있습니까? –
신경 쓰지 마라. 아마 나 혼자만 알아야한다. 도와 줘서 고마워, davr. 나는 당신의 대답에 대해 "투표"를 시도했지만, 나는 그것이 15 평판을 얻지 못하는 것처럼 보입니다 (나는 새로운 것입니다). 당신의 대답이 내 문제를 해결 했으므로 다른 사람이 투표를하기를 바랍니다. –