包(package)的概念在AS2中就已经存在,它表示硬盘中的一个目录结构,该目录结构是用来分类存贮各种类文件的。在AS3中这个概念仍旧可以理解为是一个路径,或是目录结构,包的名称也就是你的类所在的目录位置。
如果类文件和fla文件保存在同一个目录位置中,那么就不需要为“包”指定一个名字。比如:我们先建立这样一个MyMsg.as类定义文件,文件中输入以下的代码:
package{
publicclassMyMsg{
publicfunctionshowMsg(){
trace("I'minthesameplacewithflafile.");
}
}
}
然后在主场景中建立这个对象的实例,并对它的方法程序showMsg进行调用。
varmsg:MyMsg=newMyMsg();
msg.showMsg();
将fla文件与类文件保存在一起,运行之后可以看到,输出窗口中将输出我们设定好的内容。
在文件保存的位置上,我们建立一个目录比如叫dzxz,在它里面再建一个目录比如叫as3,在dzxzas3目录里新建一个类文件叫MyMsg2.as,它位于一个目录结构中,所以需要指定它的包名称,类代码写成如下形式:
packagedzxz.as3{
publicclassMyMsg2{
publicfunctionshowMsg(){
trace("I'minthepackageofdzxz.as3!");
}
}
}
在主场景中若要使用包中的MyMsg2类,就必需先导入包,用import语句,添加一行导入语句,代码改为:
importdzxz.as3.MyMsg2;
varmsg:MyMsg2=newMyMsg2();
msg.showMsg();
(在测试时发现,如果包中的类名和当前目录下的类名一至时,当前的类文件优先被使用,所以包中的类名改成MyMsg2)
通过前面的例子可以发现,包名称是写在package和{之间的,类文件的名称MyMsag.as是和它里面的类名称MyMsg保持一致的。如果使用了包名称,就必须用目录结构来存放类文件,这做的好处是类多的时候不容易搞混。