好久没有更新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