2017-05-26 103 views
0

首先,是的,我知道AS2已經過時了,但我自學成才,AS2更容易學習。自從我開始這個項目以來,我開始轉向AS3,但我真的不想嘗試將此項目重新編碼爲AS3。AS2檢查是否加載了外部文件

所以,這個問題。 我正在使用另一個swf在另一個站點上託管的外殼swf。我希望能夠測試外部swf是否已成功加載,如果沒有,則嘗試從備份主機加載它。有沒有辦法做到這一點?

這裏是shell代碼(工作得很好,只是要添加的if/else測試吧):

stop(); 

    this.onEnterFrame=function(){ 
     var mc:MovieClip = this.createEmptyMovieClip("mc", this.getNextHighestDepth()); 
     var image:MovieClip = mc.createEmptyMovieClip("image", mc.getNextHighestDepth()); 
     image.loadMovie("[redacted]"); 
     image._lockroot = true; 
     delete this.onEnterFrame; 
    } 

我試過image.loadMovie後運行的image.getBytesTotal()() ,但它總是踢回0值。

回答

0

我能找到解決方案。切換到使用MovieClipLoader.loadClip()而不是loadMovie()並調用onLoadError偵聽器。

這裏的代碼,如果其他人試圖做類似的代碼,它測試第一個主機,加載備份,然後測試該主機,如果兩者都失敗,那麼它通過shell剪輯前進到一個存在錯誤的框架給觀衆的信息。

var container:MovieClip = createEmptyMovieClip("container", getNextHighestDepth()); 
    var mcLoader:MovieClipLoader = new MovieClipLoader(); 
    mcLoader.addListener(this); 
    mcLoader.loadClip("URL", container); 
    container._lockroot = true; 


    var mclListener:Object = new Object(); 
    mclListener.onLoadError = function(target_mc:MovieClip, errorCode:String) { 
     if(errorCode == 'URLNotFound'){ 
      mcLoader.loadClip("URL", container); 
      trace("host 1 failed"); 
      container._lockroot = true; 
      mclListener.onLoadError = function(target_mc:MovieClip, errorCode:String) { 
       if(errorCode == 'URLNotFound'){ 
        trace("host 2 failed"); 
        _root.gotoAndStop(2); 
       } 
      } 
     } 
    }; 
    mcLoader.addListener(mclListener); 

    stop();