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 检查是不是加载了外部文件的主要内容,如果未能解决你的问题,请参考以下文章