我学Flash/Flex(1):Action Script3.0基础知识

前言

最近一直在做Silverlight开发,因为技术的相关性,开始学习Flex/Flash。Silverlight需要掌握C#;同样,我们学习使用Flex/Flash,就需要了解跟它相关的语言——Action Script。本人是从Action Script3.0入门的,本文通过AS3与C#的对比来说明AS3的一些最基本的知识。(纯属个人见解)

一、类与文件

AS3中的类文件必须是.as文件。注意点:

1.一个文件中只能定义一个类,且类名必须要和文件名一致。

2.类是定义在Package中。跟C#中一个cs文件中可以定义多个类的要求较为严格。(个人觉得这样更好,从源头就要你规范。)

3.一个类最多只能有一个构造函数。

二、Package与NameSpace

 NameSpace:

  .NET Framework 使用命名空间(namespace)来组织它的众多类,使用namespace关键字可声明命名空间。在较大的编程项目中,声明自己的命名空间可以帮助控制类名称和方法名称的范围.使用using关键字引入需要的namespace,namespace也可以有自己的别名。

Package:

  Package(包),通namespace相似,主要用于组织管理类,使用关键字import引入。但是,包是根据类所在的目录路径所构成的,并可以嵌套多层。包名所指的是一个真正存在的文件夹,用 “.”进行分隔。

例:

1 //定义包HelloFlex
2 package HelloFlex{
3 public class Person {
4 //...
5 }
6 }
7 //引入包
8 import HelloFlex.Person;

三、继承(Inheritance)、接口(Interface)

 同C#不支持多重继承一样,AS3也不支持多重继承,但是可以实现多个接口。继承的语法和java相似:

 1 package HelloFlex
2 {
3 public class Outman extends Person
4 {
5 public function Outman(obj:Object)
6 {
7 super(obj);
8 }
9 }
10 }

接口定义与实现:

 1 package HelloFlex
2 {
3 public interface ISuperAction
4 {
5 function Fly():void;
6 }
7 }
8
9
10
11 package HelloFlex
12 {
13 public class Outman extends Person implements ISuperAction
14 {
15
16 public function Outman(obj:Object)
17 {
18 super(obj);
19 this._name = "Outman";
20 }
21
22 private var _name:String;
23
24 public override function get Name():String{
25 return this._name;
26 }
27
28 public function Eat():void{
29 //...TODO
30 }
31
32 //public function Eat(food:String):void{ error
33 //...TODO
34 //}
35
36 public function Fly():void{
37 //...
38 }
39 }
40 }

四、变量/属性定义 

C#中变量和属性定义分别为:

1         private string _name = string.Empty;
2
3 public string Name
4 {
5 get { return _name; }
6 set { _name = value; }
7 }

但是在AS3中变量和属性的定义语法(Person.as):

1 private var _name:String;
2
3 public function set Name(name:String):void{
4 this._name = name;
5 }
6
7 public function get Name():String{
8 return this._name;
9 }

五、方法定义、overload,override

AS3.0中是不支持重载(overload)的。支持override(Outman.as):

1 private var _name:String;
2
3 public override function get Name():String{
4 return this._name;
5 }

六、动态语言

C#4.0以后开始支持动态语言,提供了dynamic关键字。AS3.0作为一个符合ECMA规范的脚本语言,也是支持动态语言的。我们再定义一个类Xman:

 1 package HelloFlex
2 {
3 public dynamic class Xman extends Person
4 {
5 public function Xman(obj:Object)
6 {
7 super(obj);
8 }
9 }
10 }

使用:

1 var xman:Xman = new Xman({name:"xman"});
2 xman.Age = 10;
3 trace(xman.Name +":"+xman.Age);


刚刚学习Flex/Flash,大致的总结。

原文地址:https://www.cnblogs.com/pszw/p/2357802.html