2010-03-29 3 views
1

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 코드입니까?

답변

1

서버 기능이 어떻게 오류가 발생합니까? 그것은 404 또는 503 또는 뭔가 같은 실제 HTTP 오류 코드를 반환하는지 확인하십시오. 텍스트 메시지로 오류가있는 HTTP 상태 코드 200을 반환하는 경우 Flash는 오류임을 알지 못합니다. 단지 상태 200을보고로드가 좋다고 생각하고 데이터를 플래시 무비로로드하려고 시도합니다.

+0

catch 블록에서 "파일을 찾을 수 없습니다 ..."예외가 발생하지만 아무 것도하지 않습니다. 어떤 이유로 든 잘못된 URL로 AS2 onLoadError 함수에서 오류를 트리거하는 데 충분하지만 잘못된 파일 이름으로는 충분하지 않습니다. 내 오류 처리 기술이 부족합니다. 원하는 HTTP 오류 코드를 반환하는 방법은 무엇입니까? 어떻게 든 그것을 HttpContext.Response에 써야합니까? 도움 주셔서 감사합니다. –

+0

이것은 (catch 블록에서) 트릭을 수행하는 것으로 보입니다. context.Response.StatusCode = 404; "catch (Exception ex)"로 들어오는 오류 유형을 식별하고 이에 따라 상태 코드를 설정하는 좋은 방법이 있습니까? –

+0

신경 쓰지 마라. 아마 나 혼자만 알아야한다. 도와 줘서 고마워, davr. 나는 당신의 대답에 대해 "투표"를 시도했지만, 나는 그것이 15 평판을 얻지 못하는 것처럼 보입니다 (나는 새로운 것입니다). 당신의 대답이 내 문제를 해결 했으므로 다른 사람이 투표를하기를 바랍니다. –