Hallo und vielen Dank für das Betrachten. Ich habe zu viele Stunden gekämpft.Entladen eines Loader mit Actionscript 3
Der folgende Code lädt eine Diashow mit vier Bildern sowie Miniaturansichten für diese Bilder. Es funktioniert gut.
Ich habe eine Schaltfläche namens "invis_button" hinzugefügt, die beim Drücken die 3 Loader entfernen soll, die die Diashow bilden, mit dem Befehl removeChild für jeden Loader.
Aber das ist das Problem, es gibt 3 Lader in der Slide-Show beteiligt. Der Befehl removeChild löscht erfolgreich einen der Loader ("loader3" genannt), aber nicht die beiden anderen ("container3" und "thumbLoader3"). Es wird ein Fehler zurückgegeben, der besagt "Zugriff der undefinierten Eigenschaft thumbLoader3" oder "Container3".
Kann mir jemand sagen, warum das ist? Oder noch besser, wie man den Button (invis_button) erstellt, um die gesamte Slideshow zu entladen.
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);
}
Ich kann Ihnen nicht sagen, wie sehr ich die Antwort schätze. Ich bin ziemlich neu in As3, gibt es einen Code, den ich verwenden kann, um eine Eigenschaft auf Klassenebene für diese Objekte zu erstellen? – Steve
hat meinen obigen Beitrag bearbeitet, um eine modifizierte Version des von Ihnen bereitgestellten Codes zu enthalten – greatdecay