flex---->ActionScript 3.0基本语法
测试输出:
trace(123); trace("abc");
变量与常量:
var a:int, b:int, c:int; a = b = c = 6; trace(a, b, c); //6 6 6 const d:int = 123; trace(d);
数据类型:
//整形 var iV1:int = -1; var iV2:int = new int(-2); var iV3:int = new int("-3"); trace(iV1); trace(iV2); trace(iV3); //无符号整形 var uV1:uint = 1; var uV2:uint = new uint(2); trace(uV1); trace(uV2); //浮点数 var nV1:Number = 3.14159265; var nV2:Number = new Number(-3.14); trace(nV1); trace(nV2); //布尔值 var bV1:Boolean = true; var bV2:Boolean = new Boolean(false); trace(bV1); trace(bV2); //字符串 var sV1:String = 'ActionScript'; var sV2:String = new String("万一的 Delphi 博客"); trace(sV1); trace(sV2); /* Object */ //Date var dateVal:Date = new Date(2011, 5, 13); trace(dateVal.toString()); //数组 var sArr1:Array = ["spring", "summer", "autumn", "winter"]; var sArr2:Array = new Array("spring", "summer", "autumn", "winter"); trace(sArr1[0]); trace(sArr2[1]); var iArr = [11, 22, 33]; trace(iArr[iArr.length-1]); //XML var xmlVal:XML = <List><item>AAA</item><item>BBB</item></List> trace(xmlVal.item[0]); //AAA
数据类型默认值:
//整形 var i:int; trace(i); //0 trace(int.MIN_VALUE, int.MAX_VALUE); //-2147483648 2147483647 //无符号整形 var u:uint; trace(u); //0 trace(uint.MIN_VALUE, uint.MAX_VALUE); //0 4294967295 //浮点数 var n:Number; trace(n); //NaN trace(Number.MIN_VALUE, Number.MAX_VALUE); //4.9406564584124654e-324 1.79769313486231e+308 //布尔值 var b:Boolean; trace(b); //false //字符串 var s:String; trace(s); //null //Object var obj:Object; trace(obj); //null var dt:Date; trace(dt); //null //未声明 var arr:Array = [11, 22]; trace(arr[1]); //22 trace(arr[2]); //undefined var val; trace(val); //undefined trace(void); //undefined
类型转换:
var i:int; i = int(true); trace(i); //1 i = int(false); trace(i); //0 i = int(5.67); trace(i); //5 i = int(0x1A); trace(i); //26 i = parseInt('3'); trace(i); //3 i = int("4"); trace(i); //4 // var n:Number; n = parseFloat("3.14159265"); trace(n); //3.14159265 n = Number("3.14159265"); trace(n); //3.14159265 // var b:Boolean; b = Boolean(-1); trace(b); //true b = Boolean(0); trace(b); //false b = Boolean(1); trace(b); //true b = Boolean(2); trace(b); //true b = Boolean(""); trace(b); //false b = Boolean(" "); trace(b); //true var obj1:Object; var obj2:Object = new Object(); b = Boolean(obj1); trace(b); //false b = Boolean(obj2); trace(b); //true // var str:String; var arr:Array = ["primary", "secondary", "tertiary"]; str = String(arr); trace(str); //primary,secondary,tertiary str = String(Math.PI); trace(str); //3.141592653589793
语句:
//if 语句 if () { } else { } //三目 var a:int, b:int, c:int; a = 1; b = 2; c = (a > b) ? a : b; trace(c); //2 //switch 语句 var dt:Date = new Date(); var day:uint = dt.getDay(); switch(day) { case 0: trace("Sunday"); break; case 1: trace("Monday"); break; case 2: trace("Tuesday"); break; case 3: trace("Wednesday"); break; case 4: trace("Thursday"); break; case 5: trace("Friday"); break; case 6: trace("Saturday"); break; default: trace("Out of range"); break; } //for 循环 for (var i:int = 0; i < 5; i++) { trace(i); } //for in 循环 var arr:Array = ["one", "two", "three"]; for (var s:String in arr) { trace(s, ":", arr[s]); } /*********** 0 : one 1 : two 2 : three ************/ var obj:Object = {x:20, y:30}; for (var s:String in obj) { trace(s, ":", obj[s]); } /*********** y : 30 x : 20 ************/ //for each 循环 var arr:Array = ["one", "two", "three"]; for each (var str in arr) { trace(str); //one/two/three } var obj:Object = {x:20, y:30}; for each (var num in obj) { trace(num); //20/30 } var myXML:XML = <users><fname>Jane</fname><fname>Susan</fname><fname>John</fname></users>; for each (var item in myXML.fname) { trace(item); //Jane/Susan/John } //while 循环与 do while 循环 var i:int; i = 0; while (i<5) { trace(i); //0/1/2/3/4 i++; } i = 5; do { trace(i); //5 i++; } while(i<5);
函数:
--------------------------------------------------------------------------------
//函数语句
function Add(a:int, b:int):int { return a + b; } trace(Add(1, 2)); //3
函数表达式
var traceParameter:Function = function (str:String) { trace("Hello " + str); }; //分号 traceParameter("ActionScript"); //Hello ActionScript
函数成员
function Sum(a:int, b:int):int { return a+b; } var arr:Array = new Array(); arr[0] = Sum; arr[1] = function(a:int, b:int) { return a*b; }; trace(arr[0](3, 4)); //7 trace(arr[1](3, 4)); //12
嵌套函数
function myFun():String { function Fun1():String { return "Hello"; } function Fun2():String { return "ActionScript"; } return Fun1() + " " + Fun2(); } trace(myFun()); //Hello ActionScript
默认参数
function Sum(a:int, b:int=2, c:int=3):int { return a+b+c; } trace(Sum(1)); //6
基本数据类型参数(Boolean、Number、int、uint、String)按值传递
function Inc1(a:int):void { a++; } var b:int = 1; Inc1(b); trace(b); //1
对象参数按引用传递
function Inc2(aObj:Object):void { aObj.x++; aObj.y++; } var obj:Object = { x:1, y:2 }; Inc2(obj); trace(obj.x, obj.y); //2 3
函数中的 arguments 对象
function myFun(a:int, b:int, c:int):void { for (var i:uint = 0; i< arguments.length; i++) { trace(arguments[i]); } } myFun(11, 22, 33); //11/22/33
arguments.callee 表示函数本身; 使用回调完成阶乘的例子:
var factorial:Function = function (x:uint) { if(x == 0) { return 1; } else { return (x * arguments.callee(x - 1)); //同 return (x * factorial(x - 1)); } } trace(factorial(5)); //120
(rest) 数组参数:
function myFun(...myArgs):void { for (var i:uint = 0; i < myArgs.length; i++) { trace(myArgs[i]); } } myFun(1, 2, 3); //1/2/3 myFun("A", "B", "C", 1, 2, 3); //A/B/C/1/2/3
错误处理:
try { throw new Error("抛出错误"); trace("不会执行"); } catch(e:Error) { trace(e.message); } finally { trace("是否发生错误都会执行"); }
运算符:
[] //初始化数组
{x:y} //初始化对象
() //对表达式进行分组
f(x) //调用函数
new //调用构造函数
x.y x[y] //访问属性
<></> //初始化 XMLList 对象 (E4X)
@ //访问属性 (E4X)
:: //限定名称 (E4X)
.. //访问子级 XML 元素 (E4X)
++ //递增(前缀、后缀)
-- //递减(前缀、后缀)
+ //一元 +
- //一元 - (非)
! //逻辑 NOT
~ //按位 NOT
delete //删除属性
typeof //返回类型信息
void //返回未定义值
* //乘
/ //除
% //求模
+ //加
- //减
<< //按位左移位
>> //按位右移位
>>> //按位无符号右移位
< //小于
> //大于
<= //小于或等于
>= //大于或等于
as //检查数据类型
in //检查对象属性
instanceof //检查原型链
is //检查数据类型
== //等于
!= //不等于
=== //全等
!== //不全等
& //按位 AND
^ //按位 XOR
| //按位 OR
&& //逻辑 AND
|| //逻辑 OR
?: //三目运算符
= //赋值
*= //乘法赋值
/= //除法赋值
%= //求模赋值
+= //加法赋值
-= //减法赋值
<<= //按位左移位赋值
>>= //按位右移位赋值
>>>= //按位无符号右移位赋值
&= //按位 AND 赋值
^= //按位 XOR 赋值
|= //按位 OR 赋值运算符: