ActionScript3.0中获取变量类型的方法

ActionScript3.0中获取变量类型的方法  

2011-10-11 12:34:10|  分类: actonscript cook|字号 订阅



AS3中一共有以下六种获取变量类型的方法:

l  typeof

l  instanceof

l  getQualifiedClassName

l  getQualifiedSuperclassName

l  is

l  as

 

typeof运算符用来返回基元数据的类型(所谓基元数据类型是指:int,uint,Boolean,Number,String 除此以外全部都是复杂数据类型)。注意,使用typeof返回复杂数据类型时将始终得到“Object”。

typeof的使用方法如下例所示:

var size:int=10;

var color:uint=0x990000;

var flag:Boolean=false;

var num:Number=.5;

var name:String=”My Name is HuLin”;

var arr:Array=[1,2,3];

var obj:Object=new Object();

var mc:MovieClip=new MovieClip();

var shape:Shape=new Shape();

trace(typeof(size));    //int

trace(typeof(color)); //uint

trace(typeof(flag));      //Boolean

trace(typeof(num));    //Number

trace(typeof(name));  //String

trace(typeof(arr));              //Object

trace(typeof(obj));             //Object

trace(typeof(mc));              //Object

trace(typeof(shape)); //Object

 

       instanceof是AS3以前的ActionScript版本(AS2或AS1)中用来判断变量类型的运算符。在AS3中依然可以使用,但是建议不要再用,因为在它可能无法正确判断AS3中新增的数据类型。例如,有如下语句:

       var num:int=5;

       trace(num instanceof int); //false

       显然,这是错误的。在AS3中应当使用is来代替它。

 

       getQualifiedClassName运算符用来返回变量所属的类的类名,用法如下:

       var shap:Shape=new Shape();

trace(getQualifiedClassName(shap)); //flash.display::Shape

注意,使用getQualifiedClassName只能返对象的直接归属类的类名,而不能获取整条继承链。

 

getQualifiedSuperclassName运算符用来返回对象所属类的父类名,用法如下:

var shap:Shape=new Shape();

trace(getQualifiedSuperclassName(shap));// flash.display::DisplayObject

      

       注意,getQualifiedSuperclassName只能向上追溯一层。它也不能获取整条继承链。

 

       is运算符,AS强力推荐之法宝。它用来验证指定变量是否属于指定类型,是则返回true,否则返回false。用法如下:

       var shap:Shape=new Shape();

trace(shap is Shape); //true

       var num:int=5;

       trace(num is Array); //false

 

       as运算符也是AS3中新增的内容。它跟is运算符的用法类似,但是它不像is一样返回true或flash,而是返回对象本身(类型匹配时)或null(类型不匹配时)。用法如下:

       var shap:Shape=new Shape();

trace(shap as Shape);   //[object Shape]

trace(shap as MovieClip);// null

posted @ 2012-10-10 10:14  Lunaa  阅读(364)  评论(0编辑  收藏  举报