Bonjour et merci beaucoup d'avoir regardé ça. J'ai passé trop d'heures à lutter.Décharger un Loader avec actionscript 3
Le code ci-dessous charge un diaporama de quatre images, ainsi que des vignettes pour ces images. Ça fonctionne bien.
J'ai ajouté un bouton appelé "invis_button", qui, lorsqu'il est pressé est censé supprimer les 3 chargeurs qui composent le diaporama, en utilisant la commande removeChild pour chaque chargeur.
Mais c'est le problème, il y a 3 chargeurs impliqués dans le diaporama. La commande removeChild supprime avec succès l'un des chargeurs (nommé "loader3"), mais pas les deux autres ("container3" et "thumbLoader3"). Il renvoie une erreur indiquant "l'accès à la propriété non définie thumbLoader3" ou "Container3".
Quelqu'un peut-il me dire pourquoi? Ou mieux encore, comment faire ce bouton (invis_button) décharger l'ensemble du diaporama.
var images3:Array = ["ad_bona1.jpg", "ad_bona2.jpg", "ad_darkhawk1.jpg", "ad_darkhawk2.jpg"];
var thumbX3:Number = -375;
var thumbY3:Number = 220;
var loader3:Loader = new Loader();
loader3.load(new URLRequest("assets/ad_bona1.jpg"));
addChild(loader3);
loader3.alpha = 0;
loadThumbs3();
function loadThumbs3():void
{
var thumbLoader3:Loader;
var container3:Sprite = new Sprite();
addChild(container3);
container3.buttonMode = true;
for(var i3:uint = 0; i3 < images3.length; i3++)
{
thumbLoader3 = new Loader();
thumbLoader3.load(new URLRequest("assets/thumbs/" + images3[i3]));
thumbLoader3.x = thumbX3;
thumbLoader3.y = thumbY3;
thumbX3 += 85;
container3.addChild(thumbLoader3);
thumbLoader3.addEventListener(MouseEvent.CLICK, thumbClicked3);
}
}
function thumbClicked3(event:MouseEvent):void
{
var path3:String = event.currentTarget.contentLoaderInfo.url;
path3 = path3.substr(path3.lastIndexOf("/") + 1);
loader3.load(new URLRequest("assets/" + path3));
}
///PROBLEM BELOW, button removes only "loader3" and not the other two for some reason
invis_button.addEventListener(MouseEvent.CLICK, unload_loaders);
function unload_loaders(event:MouseEvent):void{
removeChild(loader3);
removeChild(thumbLoader3);
removeChild(container3);
}
Je ne peux pas vous dire à quel point j'apprécie la réponse. Je suis assez nouveau pour as3, y at-il un code que je peux utiliser pour créer une propriété de niveau classe pour ces objets? – Steve
a modifié mon message ci-dessus pour inclure une version modifiée du code que vous avez fourni – greatdecay