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,并且灰色将导致编译/运行时错误。