Najprościej jest użycie „jest” operatorem i użyć czegoś takiego:
for(var i:int = 0; i < componentArr.length; i++)
{
var comp:UIComponent = componentArr[ i ];
if(comp is DataGrid)
// Handle DataGrid functionality here.
else if (comp is DropDown)
// Handle DropDown here
}
Jest jednak jeden problem z tym podejściem. Ponieważ "jest", zwróci wartość true dla wszystkich klas potomnych, musisz umieścić wszystkie klasy potomków przed ich przodkami - lista musi nadejść przed ListBase. Może to powodować pewne niedogodności.
// This is important to remember:
var mc:MovieClip = new MovieClip();
trace(mc is Sprite); // true
Jest jeszcze jedna opcja dla przypadków, w których chcesz obiekty być członkiem określonej klasy (a nie potomkiem klasy): można użyć właściwości konstruktora obiektu i użyć instrukcji switch.
for(var i:int = 0; i < componentArr.length; i++)
{
var klass:Class = componentArr[ i ].constructor;
switch(klass)
{
case DataGrid:
// Handle DataGrid
break;
case Text:
// Handle Text
break;
case NumericStepper:
// Handle NumericStepper
break;
default:
// Handle default
break;
}
}
prostu zrobił to z "is": var b: Boolean = arr [i] to TextInput, czy jest to jedyny i najlepszy sposób na zrobienie tego? –
ObjectUtil.getClassInfo ( – cloverink