AS 3.0语言是基于ECMAScript规范的.正则表达式
(ECMA,European Computer Manufactures Association,欧洲计算机制造商协会)数组
在ECMAScript规范中,对象彻底是属性的集合,app
这些属性不单单是存储的数据,也能够是函数.(函数能够当作变量,与JavaScript一致)函数
is和as操做符很好用,用于判断对象的类型ui
is操做符,判断变量的类型(is操做符返回的是一个布尔值)spa
例如:.net
var a:int;
trace(a is int);//true
trace(a is Object);//true,能够是祖先类code
as操做符,判断对象是否符合指定的数据类型,orm
若是是,返回这个对象,对象
不然返回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];