加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

【原创】AS3.0 包与类的创建和引用详解

(2008-11-29 14:54:00)
标签:

as3.0

flash

杂谈

分类: 我孜孜的学

前提:

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

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 文件外部了。

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有