路径,包与#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 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
关于路径,包与#include小结的所有评论