AS 3.0语言是基于ECMAScript规范的.
(ECMA,European Computer Manufactures Association,欧洲计算机制造商协会)
在ECMAScript规范中,对象完全是属性的集合,
这些属性不仅仅是存储的数据,也可以是函数.(函数可以当做变量,与JavaScript一致)
is和as操作符很好用,用于判断对象的类型
is操作符,判断变量的类型(is操作符返回的是一个布尔值)
例如:
var a:int;
trace(a is int);//true
trace(a is Object);//true,可以是祖先类
as操作符,判断对象是否符合指定的数据类型,
如果是,返回这个对象,
否则返回null
(as操作符返回的是对象)
例如:
var a:int=3;
trace(a as int);//3
trace(a as String);//null
复杂数据类型complex data type:
Array,
Object,所有类的祖先
Date,日期时间
Error,异常
Function,函数
RegExp,正则表达式
XML,用于操作包含一个根节点的XML数据集
XMLList
特殊数据类型
*,用于告诉编译器,将在后面设置变量的数据类型
void,在函数声明中使用,表示函数不会返回任何数据
索引数组
arr[0]
关联数组
var arr:Array=[];
arr["key1"]="value1";
arr["key2"]="value2";
for(var key:String in arr){
trace(key+":"+arr[key]);
}
for each(var value:String in arr){
trace(value);
}
另一种形式
var obj:Object={
key1:"value1",
key2:"value2"
};
trace(obj.key1);//value1
trace(obj.["key2"]);//value2
比较操作符
==,!=,<,<=,>,>=
求反!
AS3不支持函数/方法的重载
不能在同一定义域内出现多个同名函数/方法
可以不把脚本写在MXML文件中,
可以写到一个as文件内,
然后在MXML中导入,
<mx:Script source="XXX.as"/>
Repeater,不可见组件,
能够迭代遍历一组信息,在迭代同时,
动态创建组件.
PopUpMenuButton组件
在MXML文件内写AS3脚本,要用<![CDATA[…]]>括起来
声明变量,使用var关键字:
var i:int;
var j:int=100;
var k;//声明变量k,但未指定类型,k的值为undefined,不推荐
var l:*;//效果同上行
变量命名:
骆驼命名法,首字母小写,第二个及以后的单词首字母大写,
使用,”名词”或”形容词+名词”,例如:
width,maxWidth
遵守min-length&&max-imormation原则
尽量避免变量名中出现数字编号(除非逻辑上需要)
常量的定义,使用const关键字:
const PI:Number=3.1415
字符串的声明和定义:
var str1:String;//null
var str2:String="";
var str3:String=new String();//效果同上行
var str4:String="abc";
var str5:String=new String("abc");//效果同上行
var str4:String='abc';//单引号也可以,同JavaScript一样
var str5:String='林峰';//Unicode
trace(str5.length);//2
转义符,用斜杆\
回车:\r
换行:\n
制表:\t
斜杆:\\
双引号:\"
数组的定义,
和Java不一样,例如定义一个长度为5的整型数组,
Java是:
int[]a=new int[5];
而AS3是:
var a:Array=new int(5);
并且AS3的数组是长度可变的,有push和pop等操作(和JavaScript类似).
几种常见的定义形式如下:
var a:Array;//null
var b:Array=[];//空数组
var c:Array=new Array();//效果同上行
var d:Array=[1,2,3,4];
var e:Array=new Array(1,2,3,4);//效果同上行
var f:Array=new Array(5)//声明一个长度为5的数组,5个元素都是未定义
数组下标都是从0开始
多维数组:
var a1:Array=[[1,2],[3,4,5,6]];
//
var a2:Array=[];
a2[0]=[1,2];
a2[1]=[3,4]
trace(a2[0][1]);
==和===
==,会进行类型的转换
而===,不会进行类型的装换
var a:int=5;
var b:uint=5;
trace(a==b);//true
trace(a===b);//true
var c:String=”5”;
trace(a==c)//true
trace(a===c)//false
typeof,is,as
trace(typeof 10);//number
trace(10 is Number);//true
trace(10 as Number);//10
trace(10 as Array);//null
delete
用来删除对象的动态实例属性
var obj:Object={a:123};
trace(obj.a)//123
delete obj.a
trace(obj.a)//undefined
for 循环
var a:Array=[1,2,3,4];
for(var i:int=0;i<a.length;i++){
if(a[i]==3){
break;
}else{
continue;
}
}
for each in
var a:Array=[1,2,3];
for each(var value:int in a){
trace(value);
}
函数
function f1():void{
trace("call f1()");
}
或者用类似定义变量的方式
var f2:Function=function():void{
trace("call f2()")
};
f1();
f2();
//默认参数
function test(a:int=3,b:int=2,c:int =1):int{
return a+b+c;
}
trace(test(5));//8
//函数的arguments对象
arguments.length;
arguments[0];