语言结构/语法 Java 5.0 ActionScript 3.0 类包 .jar .swc 继承 class Employee extends Person{…} class Employee extends Person{…} 变量声明及初始化 String firstName=”John”;
Date shipDate=new Date();
int i;
int a, b=10;
double salary; var firstName:String=”John”;
var shipDate:Date=new Date();
var i:int;
var a:int, b:int=10;
var salary:Number; 未声明的变量 n/a var myVar:*; 变量作用域 声明在花括号内的,作用域也在括号内。
声明在函数里的,作用域即在函数里。
成员变量:声明在类里。
没有全局变量。 没有花括号作用域,最小的作用域范围是方法。
声明在函数里的,作用域即在函数里。
成员变量:声明在类里。
如果一个变量的声明不在任何类或方法里,那么它就是全局变量。 字符串 不可变类 不可变类 分号终结符 必须的 如果一条语句一行的话,你可以省略分号。 严格等于号 n/a ===
严格不等号:!== 常量符号 关键字 final
final int STATE= 1; 关键字const
const STATE:int = 1; 类型检查 静态的 (在编译时检查) 动态的 (在运行时检查) 和静态的(也叫‘strict mode’, 在 Flex Builder中是默认的) 类型检查符 instanceof is – 检查数据类型, 例如 if (myVar is String){…} as操作符 n/a 很像is操作符, 但是返回值不是布尔型而是表达式:
var orderId:String=”123”;
var orderIdN:Number=orderId as Number;
trace(orderIdN);//prints 123 原始类型 byte, int, long, float, double,short, boolean, char 所有的原始类型在ActionScript中都是对象。
Boolean, int, uint, Number, String
下面两行是相同的
var age:int = 25;
var age:int = new int(25); 复杂类型 n/a Array, Date, Error, Function, RegExp, XML, and XMLList 数组的声明与实例化 int quarterResults[];
quarterResults =
new int[4];
int quarterResults[]={25,33,56,84}; var quarterResults:Array
=new Array();
or
var quarterResults:Array=[];
var quarterResults:Array=
[25, 33, 56, 84];
AS3也有以命名的方式代替元素序号的数组,类似Hashtable。 最基础的对象 Object Object 类型转换语法: 将Object类转为Person Person p=(Person) myObject; var p:Person= Person(myObject);
或者
var p:Person= myObject as Person; 向上声明 class Xyz extends Abc{}
Abc myObj = new Xyz(); class Xyz extends Abc{}
var myObj:Abc=new Xyz(); 包 package com.xyz;
class myClass {…} package com.xyz{
class myClass{…}
}
ActionScript的包不仅能包含类,也能包含独立的方法。 类访问级别 public, private, protected
如果没有说明,该类就是能在包内访问。 public, private, protected
如果没有说明,类就是internal访问级的(类似Java中的包访问级)。 常规的访问级别:命名空间 n/a 类似XML的命名空间。
namespace abc;
abc function myCalc(){}
或
abc::myCalc(){}
use namespace abc ; 控制台打印 System.out.println(); // 只在debug模式下有效
trace(); Imports导入 import com.abc.*;
import com.abc.MyClass; import com.abc.*;
import com.abc.MyClass; 无顺序的键值对 Hashtable, Map
Hashtable friends = new Hashtable();
friends.put(”good”,
“Mary”);
friends.put(”best”,
“Bill”);
friends.put(”bad”,
“Masha”);
String bestFriend= friends.get(“best”);
// bestFriend is Bill var friends:Array=new Array();
friends[”good”]=”Mary”;
friends[”best”]=”Bill”;
friends[”bad”]=”Masha”;
var bestFriend:String= friends[“best”]
friends.best=”Alex”;
Another syntax:
var car:Object = {make:”Toyota”, model:”Camry”};
trace (car[”make”], car.model);
// Output: Toyota Camry 提升 n/a 编译器会将方法中所有变量声明提到顶端,所以你可以用一个变量名甚至在它声明之前。 实例化 Customer cmr = new Customer();
Class cls = Class.forName(“Customer”);
Object myObj= cls.newInstance(); var cmr:Customer = new Customer();
var cls:Class = flash.util.getClassByName(“Customer”);
var myObj:Object = new cls(); 私有类 private class myClass{…} AS3中没有私有类 私有的构造函数 支持 不支持 类和文件名 一个文件可以有多个类声明,但是只能有一个是public,并且这个文件名必须和这个类名一致。 一个文件可以有多个类声明 包里能放什么 类和接口 类, 接口, 变量, 方法, 命名空间, 和可执行的声明 动态类 (定义一个可以在运行时动态添加修改属性和方法的类). n/a dynamic class Person {
var name:String;
}
//动态的添加变量和方法
Person p= new Person();
p.name=”Joe”;
p.age=25;
p.printMe = function () {
trace (p.name, p.age);
}
p.printMe(); // Joe 25 方法 closure n/a. myButton.addEventListener(“click”, myMethod); 抽象类 支持 n/a 方法重载 支持 支持. 必须使用override声明 方法过载 支持 不支持 接口 class A implements B{…}
接口可以包括方法的声明和静态变量。 class A implements B{…}
接口只能存放方法的声明。 异常处理 关键字: try, catch, throw, finally, throws
未捕捉的异常会向上传递到调用它的方法。 关键字: try, catch, throw, finally
方法不必声明异常。
不仅可以抛出Error对象,也能抛出数字:
throw 25.3;
一旦有未捕捉的异常Flash Player立即停止脚本执行。 正则表达式 支持 支持
Date shipDate=new Date();
int i;
int a, b=10;
double salary;
var shipDate:Date=new Date();
var i:int;
var a:int, b:int=10;
var salary:Number;
声明在函数里的,作用域即在函数里。
成员变量:声明在类里。
没有全局变量。
声明在函数里的,作用域即在函数里。
成员变量:声明在类里。
如果一个变量的声明不在任何类或方法里,那么它就是全局变量。
严格不等号:!==
final int STATE= 1;
const STATE:int = 1;
var orderId:String=”123”;
var orderIdN:Number=orderId as Number;
trace(orderIdN);//prints 123
Boolean, int, uint, Number, String
下面两行是相同的
var age:int = 25;
var age:int = new int(25);
quarterResults =
new int[4];
int quarterResults[]={25,33,56,84};
=new Array();
or
var quarterResults:Array=[];
var quarterResults:Array=
[25, 33, 56, 84];
AS3也有以命名的方式代替元素序号的数组,类似Hashtable。
或者
var p:Person= myObject as Person;
Abc myObj = new Xyz();
var myObj:Abc=new Xyz();
class myClass {…}
class myClass{…}
}
ActionScript的包不仅能包含类,也能包含独立的方法。
如果没有说明,该类就是能在包内访问。
如果没有说明,类就是internal访问级的(类似Java中的包访问级)。
namespace abc;
abc function myCalc(){}
或
abc::myCalc(){}
use namespace abc ;
trace();
import com.abc.MyClass;
import com.abc.MyClass;
Hashtable friends = new Hashtable();
friends.put(”good”,
“Mary”);
friends.put(”best”,
“Bill”);
friends.put(”bad”,
“Masha”);
String bestFriend= friends.get(“best”);
// bestFriend is Bill
friends[”good”]=”Mary”;
friends[”best”]=”Bill”;
friends[”bad”]=”Masha”;
var bestFriend:String= friends[“best”]
friends.best=”Alex”;
Another syntax:
var car:Object = {make:”Toyota”, model:”Camry”};
trace (car[”make”], car.model);
// Output: Toyota Camry
Class cls = Class.forName(“Customer”);
Object myObj= cls.newInstance();
var cls:Class = flash.util.getClassByName(“Customer”);
var myObj:Object = new cls();
var name:String;
}
//动态的添加变量和方法
Person p= new Person();
p.name=”Joe”;
p.age=25;
p.printMe = function () {
trace (p.name, p.age);
}
p.printMe(); // Joe 25
接口可以包括方法的声明和静态变量。
接口只能存放方法的声明。
未捕捉的异常会向上传递到调用它的方法。
方法不必声明异常。
不仅可以抛出Error对象,也能抛出数字:
throw 25.3;
一旦有未捕捉的异常Flash Player立即停止脚本执行。