注释
支持行内注释和多行注释:
行内注释
//这里是行内注释 var i:int; var x:int; //这是也是行内注释
多行注释
/* 这是 一段 多行注释 */
变量
ActionScript支持比JavaSctipt所支持的更新的ECMAScript标准实现版本。
变量名命名规则:
可以包含字母、数字、下划线和美元符号,但不能以数字开头, 区分大小写。
变量数据类型的规则:
于JavaScript不同,ActionScript的变量要使用严格的数据类型,也就是说,要在变量后赋予该变量的值,必需是定义该变量时所声明的类型,或者兼容的类型。
var $number:Number; $number = "test" //语法错误,右值必需是一个数字,而不是字符串
类型检查
- ActionScript同时支持静态类型检查和动态类型检查。
- 静态类型检查在编译时执行,由编译器负责进行类型检查,返回检查结果给开发者;
- 动态类型检查则是Flash Player在程序运行期间对变量类型的管理。
顶级类
- 类是方法和属性的集合,并且类被封装在包中。
- Flex3中有几本数据类型的概念,它们在Flex4都被封装成了类,放在顶层的包中,顶层包是默认可用的,所以仍然可以随时使用它们。
Array Boolean Class Date int Number Object String unit Vector XML XMList
- 使用顶层类不需要事先使用import语句导入包,即可直接创建类的实例:
var $string:String = new String("HELLO"); //更简洁的方式: var $str:String = "HELLO"; var $xml:XML = <root><node></node></root>; var $array:Array = ["item1","item2","item3"]; var $obj:Object = {x:1, y:2, z:3};
特殊数据类型
特殊数据类型就是保留字和保留值,使用它们来创建变量就会发生错误:
*, void, undefined, null, NaN(not a number)
循环
for循环:
for(var i = 0; i < 10; i++ ){ trace(i); }
var myArray:Array = ["item1","item2", "item3"]; //这种形式的循环适合操作XML或者XMList对象 //这种形式的循环是按照属性名迭代的,而数组的属性名就是数组的索引 //大多数情况下都要使用String类型的属性名,针对数组的索引,直接使用int很可能会报错,而使用String则Flash Player会自动转换成数值 for(var i:String in myArray) { //查看trace输出需要下载Flash Player 的debug版本,并使用特定的浏览器(如IE进行调试) trace(myArray[i]); }
var myObj:Object = {firstName:"leo",lastName:"xu"}; for(var i:String in myObj) { trace("Property:" + i + "=" + myObj[i]); }
//如果只想得到每项的值,使用for each ... in 更方便 for each(var i:String in myObj) { trace(i); }
while和do..while循环:
...
if, else , else if判断:
...
switch循环:
...
数组
ActionScript支持三种类型的数组:
- 索引数组
- 关联数组
- 多维数组
索引数组:
var $array1:Array = new Array(); var $array2:Array = new Array(3);
操作
push() //添加到末尾 unshift() //添加到开头 pop() //末尾删除 shift() //开头删除 splice() //从某个位置删除,然后插入新项 $array.splice(1, 0, "leo xu");//在第二个位置添加一个 $array.splice(1, 1);//删除第二项 $array.splice(3, 2, "leo", "xu", "hahaha");//从第四个位置开始删除两项,再添加三个新项 var $array:Array = new ["leo", "xu", "hahaha"];//数组的简便初始化
//下面是数组的遍历 for(var i:int = 0; i<array.length; i++ {//使用length属性获取数组的大小 trace(array[i]);//把值输出到日志 }
关联数组:
可以存储键值对的集合.
var $map:Array = new Array(); $map["item1"] = "leo1"; $map["item2"] = "leo2"; $map["item3"] = "leo3"; trace($map["item1"]); trace($map["item2"]); trace($map["item3"]); for(var key:String in $map) { trace("key:" + key + " ,value:" + $map[key]); }
//如果只想得到每项的值,使用for each ... in 循环 for each (var i:String in $map) { trace("value:" + i); }
注意:关联数组中值得存放时无序的,所以上述循环无法预言其输出顺序。
//另外一种输出键值对的方式就是直接使用Object对象 var $map:Object = new Object(); var $map:Object = {item1:"leo", item2:"xu", item3:"hahaha"};
//关联数组还可以使用点表示法来访问数组项: trace($map.item1); trace($map.item2); trace($map.item3);
注意:键名中存在空格的项不适合使用点表示法来访问,会引发错误。
特殊语法
- 花括号标识代码块;
- ++,--是递增、递减的最快方式;
- 比较操作符;
- 数学操作符,要注意加号还可以连接字符串
函数和类
函数:
函数是封装了逻辑的代码块,方便重用。
类
类是一个封装了方法(函数)和属性(变量)的独立集合。
创建函数的要素:
作用域 function 函数名(参数列表):返回值类型 {}
作用域:
public , private, protected
CDDATA:
<![CDDATA[...]]>告诉编译器方括号中的内容不作为XML处理,应该始终把ActionScript代码放到<![CDDATA[...]]>的方括号中。
导入包:
import mx.collections.ArrayCollection;//导入ArrayCollection类 import mx.collections.*;//导入所有的类
注意:导入内容只在执行了import语句的文件内可见。
将ActionScript代码放到独立于MXML文件的文件中:
- 可以将ActionScript代码独立放到.as后缀的文件中;
- 然后再MXML文件中,使用如下代码引入该as文件:
<fx:Script source="xxx.as"/>
数据绑定
ActionScript支持让一个项目监听另外一个的项目的值,这种功能叫做数据绑定。
绑定有助于减轻代码量,并有效抽象出信息的发布者和使用者,加强应用程序的扩展性。
- 不使用绑定的:
<?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600"> <s:layout> <s:BasicLayout/> </s:layout> <fx:Declarations> <!-- 将非可视元素(例如服务、值对象)放在此处 --> </fx:Declarations> <s:Group> <s:layout> <s:HorizontalLayout/> </s:layout> <s:TextInput id="text1"/> <s:Button label="copy" click="text2.text = text1.text"/> <s:TextInput id="text2"/> </s:Group> </s:Application>
- 添加绑定:
<?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600"> <s:layout> <s:BasicLayout/> </s:layout> <fx:Declarations> <!-- 将非可视元素(例如服务、值对象)放在此处 --> </fx:Declarations> <s:Group> <s:layout> <s:HorizontalLayout/> </s:layout> <s:TextInput id="text1"/> <s:TextInput id="text2" text="{text1.text}"/> </s:Group> </s:Application>
- 绑定标签:
<?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600"> <s:layout> <s:BasicLayout/> </s:layout> <fx:Declarations> <!-- 将非可视元素(例如服务、值对象)放在此处 --> </fx:Declarations> <fx:Binding source="text1.text" destination="text2.text" twoWay="true"/> <s:Group> <s:layout> <s:HorizontalLayout/> </s:layout> <s:TextInput id="text1"/> <s:TextInput id="text2"/> </s:Group> </s:Application>
使ActionSrcript变量可被绑定:
注意,可以再任何ActionScript变量上启用绑定,只需要使用到元关键字
[Bindable].
MXML中的
元关键字用于描述变量,组件和类的额外属性,另外还可以用来声明自定义组件所分发的自定义事件。
默认情况下,Flex中的东西并不都是可以被用来绑定的,可不可以被绑定,必需
显示声明。
<?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600"> <s:layout> <s:BasicLayout/> </s:layout> <fx:Declarations> <!-- 将非可视元素(例如服务、值对象)放在此处 --> </fx:Declarations> <fx:Script> <![CDATA[ [Bindable] public var s:String = ""; ]]> </fx:Script> <s:Group> <s:layout> <s:HorizontalLayout/> </s:layout> <s:TextInput id="text1"/> <s:Button label="copy" click="s=text1.text"/> <s:TextInput id="text2" text="{s}"/> </s:Group> </s:Application>