getChildbyName
ищет детей в списке отображения, а не переменных-членов.Похоже, вы пытаетесь использовать его для размышления, а это не то, что он делает.
Чего вы на самом деле пытаетесь достичь здесь?Если у него просто есть способ создать тип на основе строки, тогда вы можете сделать простой оператор switch:
// Assuming all *Slide objects implement ISlide
private function buildSlide(type:String):ISlide {
switch (type) {
case "Foto":
return new FotoSlide();
case "Text":
return new TextSlide();
// ...
}
}
var data:Object = _dataProvider[0];
trace(data.type);//This gives back the string Foto
var slide:Sprite = this.builderSlide(data.type);
addChild(slide);
Или создать хеш с функциями, которые возвращают новый элемент этого типа.Например:
private var builders:Object = {
"Foto" : function() { return new FotoSlide(); },
"Text": function() { return new TextSlide(); },
// ...
};
var data:Object = _dataProvider[0];
trace(data.type);//This gives back the string Foto
var slide:Sprite = this.builders[data.type]();
addChild(slide);
Возможно, вы захотите провести некоторую проверку значения data.type
, чтобы убедиться, что это ожидаемый тип, в зависимости от степени доверия источнику данных.
Первыйнемного более безопасен, но оба должны работать.