博客首页 注册 建议与交流 排行榜 加入友情链接
推荐 投诉 搜索: 帮助

bridge2006

天行健,君子以自强不息。
  bridge2006.cublog.cn

关于作者
姓名:bridge
职业:IT
年龄:28
位置:湖北
个性介绍:天行人健,君子以自强不息.
|| << >> ||
我的分类


ActionScript3.0(五)--数据类型检查(一)
 好久没有更新ActionScript3.0了。
(一)数据类型
   一个数据类型声明是有初始值的,例如,Boolean有两个初始值:true和false。as3.0中比较常用的数据类型,有String,Number和Array。你也可以通过使用自己写的类和接口声明所需要的数据类型。
   在actionscript3.0中,初始化值和对象声明值,FlashPlay都认为他们同属一个类型
 ,请看下面的例子:
     var otherInt:int=3;
     var otherInt:int=new int(3);
注释:关于初始化值和对象声明值在flashplay是否相同有待研究
  1.程序设计类型检查
      在程序编写中,要明确传递变量值的类型和接受参数类型相同,请看下面的例子,参数
mystring的类型必须要和传进来相同:
        function fun(mystring:String){
                trace(mystring)
        }
        var string:String="hello";
        fun(string)
      在严格模式中,ActionScript编译报告类型错位并编译异常。请看下面的例子,在下面的代码中在函数中声明一个对象类型的参数,但是后来又将这个参数付给了字符串和数字型,在安全模式中将产生一个编译错误:
        fucntion DynamicTest(varx:
Object){
             if(varx is
String){
               
var string:String=varx;  //在安全模式中将产生一个编译错误
                trace("String"+string);
             }else if(varx is Number){
               
var number:Number=varx;  //在安全模式中将产生一个编译错误
                trace("Nubmer"+number);
             }
        }  
      当然,在安全模式中不可以,你也能够使用其他的方法。在函数参数声明中可以让参数适应所有的数据类型,请看下面的例子:
      
fucntion fun(varx){
             if(varx is
String){
               
var string:String=varx;
                trace("String"+string);
             }else if(varx is Number){
               
var number:Number=varx;
                trace("Nubmer"+number);
             }
        }
        fun(100);
        fun("hello");
   2.运行时间检查
     在普通模式中,FlashPlayer同样也有严格要求,请看下面的例子,在函数fun中参数接受了一个值3,因为参数的类型声明是一个(Array),即使运行在普通模式中也会报错:


        function fun(mycan:
Array){


             trace(mycan)


        }


        var myNum:Number=3;


        fun(myNum)    /
/在普通模式中将产生一个编译错误
      如果将myNum不限制类型,在普通模式中也会报错的,请看下面的例子:
        
function fun(mycan:Array){


             trace(mycan)


        }


        var myNum=3;


        fun(myNum)    /
/在普通模式中将产生一个编译错误
(二)1. is操作符
       is操作符在actionscript3.0中是新添加的,用来测试对象是不是和这个类或接口有继承关系,请看下面的例子:
         
var mySprite:Sprite=new Sprite();
          trace(mySprite is Sprite)    //输出: true
          trace(mySprite is DisplayObject)  //
输出: true
          trace(mySprite is IEventDispatcher)  //输出: true
     2. as操作符
        as操作符与si操作符不同之处在于它可以输出具体对象
          var mySprite:Sprite=new Sprite();
          trace(mySprite as Sprite)          //输出: [object Sprite]
          trace(mySprite as DisplayObject)   //
输出: [object Sprite]
          trace(mySprite as IEventDispatcher)//输出: [object Sprite]
          trace(mySprite as Number)          //输出:null

 原文地址 http://blog.sina.com.cn/u/3f1d80e30100051k#sort_1
发表于: 2006-10-31,修改于: 2006-10-31 21:28,已浏览365次,有评论0条 推荐 投诉


网友评论
 发表评论