(Похоже, вы исправили Error #2007
, как указал CapelliC .)
Для повторного использования loadImage()
он должен быть независимым отчто-нибудь вне этого.Ваша текущая loadImage()
нуждается в imageLoader
, который вы должны объявить внутри функции.
imageLoaded()
также зависит от него, но, поскольку он входит в прослушиватель событий, вы должны получить imageLoader
повыполнение .addChild(e.currentTarget.loader)
вместо .addChild(imageLoader)
.
Эта путаница в области видимости заставляет вас потерять два других загруженных изображения (остерегайтесь замыканий!), потому что imageLoader
переопределяется новым экземпляром самого себя напри каждом вызове функции.
Кроме того, вы можете легко передать любую переменную с помощью addEventListener()
после небольшого изменения в imageLoaded()
.Вот как вы должны все это делать:
loadImage("\\assets\\" + rootPath + "\\images\\bg.jpg", "1");
loadImage("\\assets\\" + rootPath + "\\images\\english.png", "2");
loadImage("\\assets\\" + rootPath + "\\images\\spanish.png", "3");
function loadImage(url:String, inc:String):void {
trace(inc);
var imageLoader:Loader = new Loader();
imageLoader.load(new URLRequest(url));
imageLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, imageLoaded(inc));
}
function imageLoaded(counter:String):Function {
return function(e:Event):void {
trace(counter);
if (counter == "1") {
trace("Background");
background.addChild(e.currentTarget.loader);
} else if (counter == "2") {
trace("english");
englishMC.addChild(e.currentTarget.loader);
} else if (counter == "3") {
trace("Spanish");
spanishMC.addChild(e.currentTarget.loader);
}
//e.currentTarget.removeEventListener(Event.COMPLETE, arguments.callee);
}
}
Теперь вы можете повторно использовать loadImage()
и imageLoaded()
.