作者:fbysss

关键字:AS3,ActionScript

引言:

如果有java、javascript基础,AS语法很好理解,有一个上午足够。看了本文,基本可编写代码调试。

1.       开发工具

FlashBuilder。新建一个【ActionScript】项目,会自动生成一个as文件,可以直接在里面写代码测试。

从结构上看,这个文件是一个类,与java语法类似。

 

2.       AS语法

var 关键字定义,trace输出

变量定义:

var i :int = 100;
trace(“i=”+i);

数组

var myArray:Array=(1,2,3);
trace(“myArray[0] is :”+myArray[0]);

对象:

var person:Object =- {name:”fbysss”,title:”manager”,gender:”male”};
trace(“person.name:”+person.name);

加入方法

var person:Object =- 
{name:”fbysss”,title:”manager”,gender:”male”,
sayHello:function():void{
         trace(“hello,I am ”+person.name);//也可以使用 trace(“hello ,I am ”+person[“name”])
}
salary:function(){
         return1000000)(;
}
};
 
person.sayHello();
trace(person.salary());

动态添加类属性和方法

var person:Object={};
person.name=”fbysss”;
person.title=”manager”;
person.sayHello = function :void{
         trace(“hello, I am ”+person.name);
}

各种类型默认值

如果没有初始化,

int,unit :0

Number: NaN

String、Object:null

Boolean:false

没有类型的定义如var i;或者var i:*;  :undefined

 

in关键字

var sssArray:Array={1,2,3};
trace(“2 in sssArray:”+(2 in sssArray)); //true
trace(“2 in sssArray:”+(“2” in sssArray));//true

Function类型

函数表达式:

var sayHello: Function = function():void{
         trace(“helloworld”);
}
sayHello();


显然,sayHello必须在定义语句之后才能调用。

正常的函数定义,与javascript一致

 

访问参数信息

与javascript类似。为arguments对象

arguments.length 参数个数

arguments.callee 调用者

 

 

面向对象

这部分与java很像,不用多说

package 不是分号,而是花括号。

 

事件机制

事件与方法的区别:

事件是侦听,满足一定条件才被触发的;被动调用

方法随时可能被调用;主动调用

事件的调用者与被调用者,可能不是一个进程,低耦合。

而方法调用则必须是一个进程之中,耦合性强。

3.       调试方法

F11

没有main方法,可通过构造函数调试

 

4.       注意点

Number(“hello”) 输出是 NaN

但Number(“hello”)==NaN永远是false

如果要判断,应该使用 if (Number(“hello”))的形式,类似javascript

 

 

switch 语句与javascript一样,支持string类型。注意break。

 

 

Q:动态参数 ...rest?有什么用?——这里有一个疑问,因为as3和javascript一样,直接就支持不定数量的参数,要这个何用?

A:在面向对象的AS3类里面,可以理解为静态语言,必须采用这样的方式,才能支持动态参数(类似Java的动态参数做法)。

 

如果是动态定义的函数变量,不需要。

 

例:

 

public class Test(){
         publicfunction dynamicParam(){
                   for(vari =0 ; i< params.length ; i++){
                            trace(params[i]);
}
}
 
         publicfunction Test(){
                   dynamicParam(1,2,3);
         }
}