AS2检查是否加载了外部文件

时间:2017-05-26 16:21:05

标签: flash actionscript-2

首先,是的,我知道AS2已经过时,但我自学成才,AS2更容易学习。自从我开始这个项目以来,我开始转向AS3,但我真的不想尝试将这个项目重新编码为AS3。

所以,问题。 我正在使用一个shell 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值。

1 个答案:

答案 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();