转载:AS3 包和类的引用

前提:

如果有任何一门程序语言(哪怕不是面对对象的编程语言)的基础,就可以更加轻松的理解ActionScript 3.0语言规则。

 

一 概念实质

 

(package)实质上是一个文件夹,包(文件夹)内可以包含多级文件夹(包)。

例如:

MyLib包下有一个Tools文件夹, 则Tools文件夹就是 MyLib 的子包,引用格式为 MyLib.Tools

 

(class)一个单独的as文件,类是用来描述一个对象(面对对象的编程模式)的,Adobe建议每个类就是一个单独的文件,文件名就是类名。例如:car.as 就是一个 car类。

例如:

MyLib包下有一个car类,引用car类的格式为 MyLib.car

如果还有个类 fly.as 在 Tools 包( 文件夹)下,则引用格式为 MyLib.Tools.fly

 

二 创建方法

 

包:

包的实质是文件夹,所以直接在 *.fla 文件所在的目录创建 以包命名的文件夹即可。例如想建立一个名为 MyLib 的包,就新建文件夹,然后将文件夹重命名为 MyLib 即可。

 

子包:

如果 MyLib 包内仍然需要对as文件有所区别的话,可以继续建立包,即建立子文件夹。例如想在 MyLib 包内建立一个 Tools 包,则在MyLib文件夹内建立新文件夹, 重命名为 Tools 即可。

 

类:

类即 *.as 文件, 可单独创建, 也可以创建在包内。 例如想创建一个 描述汽车(car)的类,只需要建立一个 car.as 文件即可。

 

 

三 类的写法

因为包的实质是文件夹,所以建立文件夹,就建立了包。

 

1) 不在任何包下

如果一个类(假设类文件名为 bike.as )不在任何包下,那么就无需声明任何包或类标记,因为在编译的时候会自动为该文件创建类实例。用户只需要在该文件下直接定义或写方法即可,例如:

1 var word:String = "I am bike;";
2 
3 function Say():String
4 {
5 return word;
6 }

 

 

注意:

不要在方法或变量前加 public 修饰符(否则编译器错误:1114: public 属性只能在包的内部使用。),因为 bike 类不在任何包(文件夹)内, 类内的所有方法和变量都默认就是 public(公开的)。

 

2) 在顶级包内

如果一个类( 假设类文件名为 car.as )在 包 MyLib 下,那么就需要定义一个包标记,格式如下:

1 package MyLib{ // 声明包,表示该类是在 MyLib 包下定义的
2    public class car { // 前面要声明该类为 public(公开的), 否则在包外无法被调用
3       private var word:String = "I am a car;";
4       public function Say():String {
5         return word;
6       }
7    }
8
9 }

 

 

3) 在一个子包内

如果一个类( 假设类文件名为 fly.as),格式如下:

1 package MyLib.Tools{ // 声明包,表示该类是在 MyLib/Tools/ 路径下定义的
2    public class fly {
3       private static var word:String = "I am fly;";
4       public static function Say():String {
5        return word;
6       }
7    }
8 }

 

注意:

如果包的层级越多,那在package 声明的级别也就应该越具体。

 

四 用法

1) 包

包(假设名为:MyLib)包含了一个或多个类文件(*.as),在fla文件中,必须先导入(import)包才可以使用,包的位置必须要和 *.fla 文件在同一个文件夹内(否则编译器错误:1172: 找不到定义 MyLib)。

 

导入代码为: import MyLib.*;

导入子包代码为: import MyLib.Tools.*;

 

假设在 MyLib 包内有两个类,分别为 car.as 和 jeep.as,如果只想使用 car类,那么

导入代码为: import MyLib.car;

 

假设只想使用子包 Tools 内的 fly 类,那么

导入子包代码为: import MyLib.Tools.fly;

 

2) 类

如果类( 假设名为:bike.as )不在任何包下,那么

引用代码为: include "bike.as";

P.S.

as类文件在哪个地方就写哪个路径。例如有一个类文件( ship.as )在 D盘下,那么

引用代码为: inclide "d:/ship.as";

 

如果类( 假设名为:car.as )在包 MyLib 下,那么不用使用 include 声明,直接导入包即可。例如,要创建 car 的实例代码如下:

import MyLib.*;
var c:car = new car();
trace( c.Say() );

搞清楚包和类的关系后,就可以灵活的把 as 代码写在 *.fla 文件外部了。

 

posted @ 2012-10-27 11:35  雅尸兰黛?窃笑  阅读(479)  评论(0)    收藏  举报