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

Posted

技术标签:

【中文标题】AS2 检查是不是加载了外部文件【英文标题】:AS2 check if external file is loadedAS2 检查是否加载了外部文件 【发布时间】:2017-10-27 14:45:59 【问题描述】:

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

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

【讨论】:

以上是关于AS2 检查是不是加载了外部文件的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 XSL 检查是不是存在外部文件?

HTML / JS检查外部异步文件生成

Python等待并检查文件是不是完全由外部程序创建

HTML/JS 检查外部异步文件生成

如何在 AS2 中获取加载的 swf 舞台的宽度/高度?

Python tarfile - 检查 tar 中的文件是不是存在于外部(即已被提取)