首页 > 代码库 > ActionScript语言基础

ActionScript语言基础

注释

支持行内注释和多行注释:

行内注释

//这里是行内注释
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支持三种类型的数组:
  1. 索引数组
  2. 关联数组
  3. 多维数组

索引数组:

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>




ActionScript语言基础