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