2017-05-26 79 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();