可有人告诉我,我怎么能确定柔性物体的类型? 尤其是我,我现在为我评价我想找出我是否有TextInput控件或单选按钮阵列存储多种类型的(但所有UIComponent)的数组。 是否有人有想法?
提前致谢
可有人告诉我,我怎么能确定柔性物体的类型? 尤其是我,我现在为我评价我想找出我是否有TextInput控件或单选按钮阵列存储多种类型的(但所有UIComponent)的数组。 是否有人有想法?
提前致谢
您可以针对使用特定的类或者测试“是”经营者或者您可以使用flash.utils.getQualifiedClassName()(你传递你的对象) - 这将返回完全限定类名的字符串。
它的工作:)
以下是我解决这个问题的办法
switch( true )
{
case item is Customer_SF:
c = item as Customer_SF;
break;
case item is Opportunity:
o = item as Opportunity;
break;
case item is Product:
o = ( item as Product )._opportunity;
break;
default:
return true;
}
尝试使用“类名”属性。
它应该返回“的TextInput”或“按钮”视情况
for each (var item:* in myArray)
{
if(item.hasProperty('className'))
{
trace("item ["+i+"] is :" + item['className']);
}
}
运营商“是”代表一个选项。
再有就是运营商的instanceof ,视情况可能会或可能不会是有用的。
也有静态方法ObjectUtil类getClassInfo 。 这一次返回不仅仅是对象的类名以上。
运营商“的typeof”不幸的是无用的课程。
而且,随着布兰登厅已建议, flash.utils.getQualifiedClassName() 。
这里有一些简单的伪代码演示了如何使用的is
你想要做什么操作:
for each (var item:* in myArray)
{
if (item is TextInput)
doSomethingWithTextInput(item as TextInput);
else if (item is RadioButton)
doSomethingWithRadioButton(item as RadioButton);
}
该is
对类型的兼容性测试操作,是的。 从文档, is
:
...计算对象是否是与特定数据类型,类或接口兼容。 使用
is
操盘手的instanceof
类型的比较操作。 你也可以使用is
运算符来检查对象是否实现了接口。
此类别中其它有用的运营商typeof
(返回原始的字符串表示), instanceof
(类似于is
,但忽略接口兼容性)和as
。 ActionScript运算符的伟大和完整列表可以在这里找到 。
希望能帮助到你!
最好的办法是用“是”经营者和使用这样的:
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
}
还有一个问题,然而,这种方法。 因为“是”将所有的子类返回true,你必须把所有的子孙类的祖先面前 - 必须列出来ListBase之前。 这可能会导致一些烦恼。
// This is important to remember:
var mc:MovieClip = new MovieClip();
trace( mc is Sprite ); // true
没有为你想要的对象是特定的类(而不是一个子类)的成员的情况下另外一个选择:你可以使用该对象的constructor属性和使用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;
}
}