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];