Ich bin ein C# -Entwickler, der versucht, einige AS3 zu lernen, so wird dies eine ziemlich neue Frage sein.Benutzerdefinierte AS3-Klasse ist Null nach dem Hinzufügen zu Array
Ich bin verwirrt in Bezug auf Scope und GC, wie ich eine benutzerdefinierte MovieClip-Erweiterung Klasse (Folie) habe, die ich Instanzen innerhalb einer Schleife und push() in ein Array erstellen, aber danach sind die Elemente null wenn ich sie aus der Sammlung ziehe.
var ldr:URLLoader = new URLLoader();
ldr.load(new URLRequest("presentation.xml"));
ldr.addEventListener(
Event.COMPLETE,
function(e:Event):void {
config = new XML(e.target.data);
for (var i:Number = 0; i < config.slides.slide.length(); i++)
{
var node = config.slides.slide[i];
var slide:Slide = new Slide();
slides.push(slide);
addChild(slide); // Works fine
}
}
);
slides.forEach(function(e:*, index:int, array:Array):void
{
addChild(e); // Causes "Parameter child must be non-null" exception
}
);
Ich mag würde die Folien später, um Referenzen zu können, um sie bei Bedarf zu wechseln - Wie kann ich den Verweis auf meine neue Objekte?
Update: Es scheint, dass es zwei Probleme mit diesem gab. Der forEach-Aufruf wurde ausgeführt, bevor das vollständige Ereignis des URLLoaders aufgerufen wurde, und auch forEach scheint nicht wie erwartet zu funktionieren. Hier ist der letzte Arbeitscode:
var ldr:URLLoader = new URLLoader();
ldr.load(new URLRequest("presentation.xml"));
ldr.addEventListener(
Event.COMPLETE,
function(e:Event):void {
config = new XML(e.target.data);
for (var i:Number = 0; i < config.slides.slide.length(); i++)
{
var node = config.slides.slide[i];
var slide:Slide = new Slide();
slides.push(slide);
}
for each (var sl in slides)
{
addChild(sl);
}
}
);
Setzen Sie eine "var" vor dem "slide in slides" und ich werde Sie als Antwort markieren! – tags2k
Fertig. Tut mir leid, es passiert, wenn Sie versuchen, das Codieren zu improvisieren! : P – ozke