ActionScript 3 检查类型
示例
您可以使用is运算符来验证值是否为某种类型:
var sprite:Sprite = new Sprite();
trace(sprite is Sprite); //真正
trace(sprite is DisplayObject); //真正, Sprite inherits DisplayObject
trace(sprite is IBitmapDrawable); //真正, DisplayObject implements IBitmapDrawable
trace(sprite is Number); //假
trace(sprite is Bitmap); //假, Bitmap inherits DisplayObject
//但不是Sprite继承的。此外,还有一个instanceof操作者(不建议使用),其工作几乎相同is,除了它返回false对实现的接口时检查和INT/UINT类型。
该as运营商还可以通过使用就像is操作。如果您使用诸如FlashDevelop之类的智能IDE,这将特别有用,它将为您提供显式对象类型的所有可能属性的列表。例:
for (var i:int = 0; i < a.length; i++){
var d:DisplayObject = a[i] as DisplayObject;
if (!d) continue;
d.//在这里获取提示
stage.addChild(d);
}要获得与is您相同的效果,可以这样写(稍微不太方便):
for (var i:int = 0; i < a.length; i++){
if (a[i] is DisplayObject != true) continue;
var d:DisplayObject = a[i] as DisplayObject;
stage.addChild(d);
}请记住,在使用as运算符检查条件时,将首先将给定的值转换为指定的类型,然后将检查该操作的结果是否为假,因此在将其与可能的false/NaN值一起使用时要小心:
if(false as Boolean) trace("This will not be executed");
if(false as Boolean != null) trace("But this will be");下表显示了一些基本值和类型以及类型运算符的结果。绿色单元格将评估为true,红色单元格将评估为false,并且灰色将导致编译/运行时错误。