我在影片剪辑(logoOneLoader)的舞台上有一个UILoader(加载器),我想加载一个图像,如果该图像不存在,加载我知道确实存在的不同图像。以下代码加载第一个图像,该图像不存在,失败,捕获错误,但随后不会继续加载第二个图像。有什么建议吗?
logoOneLoader = new logoLoaderGraphic();
item.addChild(logoOneLoader);
logoURL = new URLRequest("http://www.myurl.com/img/badImage.png");
logoOneLoader.addEventListener(IOErrorEvent.IO_ERROR, noLogo);
logoOneLoader.loader.load(logoURL);
function noLogo(event:IOErrorEvent):void
{
event.currentTarget.close();
var logoString:String = "http://www.myurl.com/img/goodImage.png";
event.currentTarget.load(new URLRequest(logoString));
}
答案 0 :(得分:0)
我没有对此进行测试,但您可能还需要创建一个新的加载器对象。试试这个:
var logoOneLoader:LogoLoaderGraphic;
loadLogo("http://www.myurl.com/img/badImage.png");
function loadLogo(url:String, fallback:Boolean = true):void {
logoOneLoader = new logoLoaderGraphic();
item.addChild(logoOneLoader);
logoURL = new URLRequest(url);
if(fallback) {
logoOneLoader.addEventListener(IOErrorEvent.IO_ERROR, noLogo);
} else {
logoOneLoader.addEventListener(IOErrorEvent.IO_ERROR, logoFault);
}
logoOneLoader.loader.load(logoURL);
}
function noLogo(event:IOErrorEvent):void {
logoFault(event);
var logoString:String = "http://www.myurl.com/img/goodImage.png";
loadLogo(logoString, false);
}
function logoFault(event:IOErrorEvent):void {
event.target.close();
event.target.removeEventListener(event.type, arguments.callee);
}
答案 1 :(得分:0)
您只需加载肯定存在于单独的Loader中的图像,然后在错误处理程序中返回其克隆而不是加载的图像。
class ExtraLoader extends Sprite {
private var loader:Loader;
private static var defaultImage:Bitmap; // load it beforehand
public var contents:Bitmap;
...
public function loadFromURL(url:URL):void {
loader=new Loader();
var ur:URLRequest=new URLRequest(url);
loader.addEventListener(IOErrorEvent.IO_ERROR,oops);
loader.addEventListener(Event.COMPLETE,done);
loader.load(ur);
}
private function oops(e:Event):void {
loader.removeEventListener(IOErrorEvent.IO_ERROR,oops);
loader.removeEventListener(Event.COMPLETE,done);
contents=new Bitmap(defaultImage.bitmapData); // add "good" image
addChild(contents);
}
private function done(e:Event):void {
loader.removeEventListener(IOErrorEvent.IO_ERROR,oops);
loader.removeEventListener(Event.COMPLETE,done);
contents=loader.content;
addChild(contents); // loaded image - cool, add it
}
}