首先,是的,我知道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值。
答案 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();