Flash ActionScript (20)AS3.0 包与类的创建和引用详解

前提:
如果有任何一门程序语言(哪怕不是面对对象的编程语言)的基础,就可以更加轻松的理解Actionscript3.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 )不在任何包下,那么就无需声明任何包或类标记,因为在编译的时候会自动为该文件创建类实例。用户只需要在该文件下直接定义或写方法即可,例如:
var word:String = "I am bike;";  
function Say():String  { 
return word; 

注意:
不要在方法或变量前加 public 修饰符(否则编译器错误:1114: public 属性只能在包的内部使用。),因为 bike 类不在任何包(文件夹)内, 类内的所有方法和变量都默认就是 public(公开的)。
2) 在顶级包内
如果一个类( 假设类文件名为 car.as )在 包 MyLib 下,那么就需要定义一个包标记,格式如下:
package MyLib{ // 声明包,表示该类是在 MyLib 包下定义的
public class car {
// 前面要声明该类为 public(公开的), 否则在包外无法被调用 
private var word:String = "I am a car;"; 
public function Say():String { 
return word; 
    } 
  }  
3) 在一个子包内
如果一个类( 假设类文件名为 fly.as),格式如下:
package MyLib.Tools{
// 声明包,表示该类是在 MyLib/Tools/ 路径下定义的 
public class fly { 
private static var word:String = "I am fly;"; 
public static function Say():String { 
return word; 
} 注意:
如果包的层级越多,那在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 文件外部了
创建:
package Test  {    
public class FirstTest {     
public function tet(){      
var t:String ="道常无为";      
return t;     
}    
}
引用:
import Test.FirstTest; 
var a:FirstTest=new FirstTest(); 
trace(a.tet());  
 

你可能感兴趣的:(职场,Flash,休闲,as3.0教程,flash程序设计)