Я разработчик C#, который пытается изучить некоторые AS3, так что это будет довольно новый вопрос.Пользовательский класс AS3 имеет значение null после добавления в Array
Я смущаюсь в отношении области видимости и GC, так как у меня есть собственный класс, расширяющий ClassClip (слайд), который я создаю экземпляры внутри цикла и push() в массив, но потом элементы имеют нулевое значение когда я вытаскиваю их из коллекции.
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
}
);
Я хотел бы иметь возможность ссылки на слайды позже, чтобы переключать их по мере необходимости - как я могу сохранить ссылку на мои новые объекты?
Обновление: Похоже, что с этим возникли две проблемы. Запрос forEach делался до того, как было вызвано полное событие URLLoader, а также forEach, похоже, не работает должным образом. Вот окончательный рабочий код:
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);
}
}
);
Положите «var» перед «слайдом в слайдах», и я буду отмечать вас как ответ! – tags2k
Готово. Извините, это то, что происходит, когда вы пытаетесь импровизировать кодирование! :П – ozke