快速业务通道

路径,包与#include小结

作者 佚名技术 来源 服务器技术 浏览 发布时间 2012-07-14


最近做了一个比较大的东东,积累了些比较有用的AS2技巧,拿出点有用的和大家分享先:
有些与脚下本字典有重复了~~~~这里只介绍一些在用的时候需要注意的地方,不涉及OOP编程方面的内容。
1#include
1.1
#inlcude 是用来导入外部脚本的语句,这样的话,
你就可以在FLAS内部加上一句#include "script.as",剩下的事就让体积要小巧多的文本编辑器(如ultraEdit)来完成了。
对于coder们而言,这是比较体面的一种编写代码的方式。
注意,这种方式不可以导入类,适用于写声明类实例之类的代码。
如这样:
var p:test=new test();
p.main();剩下的事就交给你的类吧,可以完全“类里来类里去了”~~~~
1.2
可以在一个#include 里嵌套加#include ,从而导入另一个脚本文件. 1.3
可以使用一个文件夹来放脚下本文件。
假定你的文件结构是这样安排的:
test+---//这个表示文件夹
FLA
SWF
Script+---
As.as 用#include "Script\AS.as" 或 #include "Script/AS.as"皆可导入脚本文件.
2包和路径.
其实,等到你写包的时候,你才真正关注起路径方面的事项。
2.1
包在Flash中就是以简单的文件夹的形式形式存在的.
导入某个包中的某个类用:
import myPackage.subPackage.myClass;
导入某个包中的全体类用:
import myPackage.subPackage.*; 2.2
对于写在包中类的声明,要把包的路径给加上去。
class myPackage.subPackage.myClass
interface myPackage.subPackage.myInterface 2.3使用:
2.3.1
比方说,你现在的文件存放结构是这样的:
test+---//这个表示文件夹
FLA
SWF
myPackage+---
subPackage1+---
myClass1.as
subPackage2+---
myClass2.as 如果在class1中有用到class2的类对象
那就应该这样声明: import myPackage.subPackage2.myClass2;
class myPackage.subPackage2.myClass1
{
private var ins:myClass2;
...
} 最终测试时,别忘了在FLASH脚本的路径选项中应有一项 .
注意,是我们看似不起眼的一个".",它表示的是当前fla所在路径. 当然,你也可以选择不用import而导入相对路径.
class myPackage.subPackage2.myClass1
{
private var ins:myPackage.subPackage2.myClass2;
....
} 不过,大多数人应该会认为这样做的话比较麻烦的~~~~ 2.3.2
import中起点路径的定义:
import语句中的起点路径如何计算呢?
关键是看你在“首选项”中设定的脚本搜寻的起点位置,
通常是有两项:
. //指向当前路径 $(LocalData)/Classes //指向Flash的类库,如果你的Flash是装在C盘的Program Files里的话,
那么这个类库应该可以通过:
"C:\Program Files\Macromedia\Flash MX 2004\zh_cn\First Run\Classes\"
查看到. 当然,你也可以比较有“个性”的把子路径或者是父级路径设为起点路径:
../ //父级路径
./subArchive/ //子级路径
不过我不太推荐这样用. 所以,用import导入的类的起点位置都要以你在“首选项”中设定的脚下本起始路径为基准,
比方说: test+---//这个表示文件夹
FLA
SWF
myPackage+---
mySuperClass.as
subPackage1+---
myClass1.as
subPackage2+---
myClass2.as 首选项中这样设置:
.
$(LocalData)/Classes 那么mySuperClass.as若要用到myClass1.as的(通常指创建类的成员对象或继承)话,则要写:
import myPackage.subPackage1.myClass1;
myClass2.as用到myClass1.as的情况前面已有://一样的.
import myPackage.subPackage1.myClass1; 2.4事情变得复杂时,也许你会觉得有些麻烦了,其实不然,
只要遵循一个原则,当前的类/代码段里有用到哪个类,就把那个类用import给导入.
举例如下:
2.4.1
主场景中用一个简单工厂模式来切换场景当前场景的管理类,代码如下:
var SceneManager:SceneMag=new SceneMag();
var EffectManager:ISEffect=new Effect1();//ISEffect是一个接口类
SceneManager.init();
EffectManager.init(); 其中,SceneManager还有各个Effect的自身有含有很多别的子类,那么,是否要把它们一口气全声明进来呢?
根据前面讲的原则,很显然,这里只要导入你当前用的类即可,如下:
import Sdgp.SMag.SceneMag;//场景管理类
import Sdgp.SEffect.*;//效果类,有许多,全部导入. 之后的工作是交给SceneMag类及相应的Effect类去导入它们所要用到的类对象即可:
比方说ScenceMag的声明部分我是这样做的:
import Sdgp.SMag.CSObject;//扩展Object的一个类,用于存放一些自定义的全局属性,用以解决没有枚举类型的问题
import Sdgp.SMag.RCSMag;//继承其抽象父类
import Sdgp.SCom.CSComPhySce;//导入componet组件包中所定义的主场景的部分
import Sdgp.SEffect.*;//导入Seffect包中的所有类,因为这里是用简单工厂模式在创建Effect对象
class Sdgp.SMag.SceneMag extends RCSMag 附:简单工厂模式实现部分的代码:
public function changeItem(num:Number):ISEffect//通过接口类型, 实现多态的创建对象.
{
if(num==0)return new Effect1();
else if(num==1)return new Effect2();
else if(num==2)return new Effect3();
else if(num==3)return new Effect4();
else
{
trace("unfinished items");
return undefined;
}
} 2.5
至于Flash类库的使用,还请看FLASH字典或是参考网上高手写的文章吧。 3小结:
希望本文能给和我一样准备拿Flash来做些大项目的朋友们一些帮助.
关键词:

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号