2019独角兽企业重金招聘Python工程师标准>>>
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
比较操作符
&#61;&#61;,!&#61;,<,<&#61;,>,>&#61;
求反!
AS3不支持函数/方法的重载
不能在同一定义域内出现多个同名函数/方法
可以不把脚本写在MXML文件中,
可以写到一个as文件内,
然后在MXML中导入,
<mx:Script source&#61;"XXX.as"/>
Repeater,不可见组件,
能够迭代遍历一组信息,在迭代同时,
动态创建组件.
PopUpMenuButton组件
在MXML文件内写AS3脚本,要用括起来
声明变量,使用var关键字&#xff1a;
var i:int;
var j:int&#61;100;
var k;//声明变量k,但未指定类型,k的值为undefined,不推荐
var l:*;//效果同上行
变量命名:
骆驼命名法,首字母小写,第二个及以后的单词首字母大写,
使用,”名词”或”形容词&#43;名词”,例如:
width,maxWidth
遵守min-length&&max-imormation原则
尽量避免变量名中出现数字编号(除非逻辑上需要)
常量的定义,使用const关键字:
const PI:Number&#61;3.1415
字符串的声明和定义:
var str1:String;//null
var str2:String&#61;"";
var str3:String&#61;new String();//效果同上行
var str4:String&#61;"abc";
var str5:String&#61;new String("abc");//效果同上行
var str4:String&#61;&#39;abc&#39;;//单引号也可以,同Javascript一样
var str5:String&#61;&#39;林峰&#39;;//Unicode
trace(str5.length);//2
转义符,用斜杆\
回车:\r
换行:\n
制表:\t
斜杆:\\
双引号:\"
数组的定义,
和Java不一样,例如定义一个长度为5的整型数组,
Java是:
int[]a&#61;new int[5];
而AS3是:
var a:Array&#61;new int(5);
并且AS3的数组是长度可变的,有push和pop等操作(和Javascript类似).
几种常见的定义形式如下:
var a:Array;//null
var b:Array&#61;[];//空数组
var c:Array&#61;new Array();//效果同上行
var d:Array&#61;[1,2,3,4];
var e:Array&#61;new Array(1,2,3,4);//效果同上行
var f:Array&#61;new Array(5)//声明一个长度为5的数组,5个元素都是未定义
数组下标都是从0开始
多维数组:
var a1:Array&#61;[[1,2],[3,4,5,6]];
//
var a2:Array&#61;[];
a2[0]&#61;[1,2];
a2[1]&#61;[3,4]
trace(a2[0][1]);
&#61;&#61;和&#61;&#61;&#61;
&#61;&#61;,会进行类型的转换
而&#61;&#61;&#61;,不会进行类型的装换
var a:int&#61;5;
var b:uint&#61;5;
trace(a&#61;&#61;b);//true
trace(a&#61;&#61;&#61;b);//true
var c:String&#61;”5”;
trace(a&#61;&#61;c)//true
trace(a&#61;&#61;&#61;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&#61;{a:123};
trace(obj.a)//123
delete obj.a
trace(obj.a)//undefined
for 循环
var a:Array&#61;[1,2,3,4];
for(var i:int&#61;0;i if(a[i]&#61;&#61;3){ break; }else{ continue; } } for each in var a:Array&#61;[1,2,3]; 函数 function f1():void{ 或者用类似定义变量的方式 f1(); //默认参数 function test(a:int&#61;3,b:int&#61;2,c:int &#61;1):int{ return a&#43;b&#43;c; } trace(test(5));//8 //函数的arguments对象 arguments.length; arguments[0];
for each(var value:int in a){
trace(value);
}
trace("call f1()");
}
var f2:Function&#61;function():void{
trace("call f2()")
};
f2();