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

AS2 check if external file is loaded

首先,是的,我知道 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 值。

我找到了解决办法。切换到使用 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();