频道直达 - 学院 - 下载 - 交易 - 特效 - 字库 - 手册 -排名-工具- 繁體
网页教学网站开发 设为首页
加入收藏
联系我们
建站搜索: 常用广告代码   用户注册 | 用户登陆
您当前的位置:中国建站之家 -> 网站开发工具应用教程 -> Flash教程 -> 路径,包与#include小结

路径,包与#include小结

作者:未知  来源:转载  发布时间:2005-8-18 21:01:40  发布人:acx

减小字体 增大字体

最近做了一个比较大的东东,积累了些比较有用的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来做些大项目的朋友们一些帮助.


将本文收藏到QQ书签与更多好友分享
[打 印]
[] [返回上一页] [收 藏]
下一篇文章:this的使用
∷相关文章评论∷    (评论内容只代表网友观点,与本站立场无关!) [更多评论...]
精彩推荐
热门文章
· 注册码大全二
· 注册码大全四
· 注册码大全一
· 要10G免费网络硬盘的请进..
· 通过google 赶快来赚美金..
· 注册码大全十
· 头像-qq头像(qq新头像)4..
· 让你轻松架设FTP服务器1..
· 注册码大全三
· 梦幻背景图片7
· 卡通动物图片6
· 网页制作素材-按钮素材2..
· 让你轻松架设FTP服务器5..
· 风景图片8
· 注册码大全九
· 让你轻松架设FTP服务器2..
关注此文读者还看过
· 部署ASP.NET的三大技术(..
· 商业性wiki网站如雨后春..
· 运动规律的一些基本概念..
· .net中的事务处理(二)..
· 用perl访问mysql数据库之..
· Photoshop打造超可爱卡通..
· 前沃尔玛全球资深副总裁..
· 熊猫烧香病毒幕后黑手曝..
· Google的巨额财富之困
· 建立主动性网络安全体系..
· Photoshop数字云彩教程
· 2006上半年度电脑病毒疫..
· FireworksMX教程:荧光按..
· Photoshop轻松打造夜视照..
· 给新手的一些话:心态放..
· 合成的机械头像 [3]
相关文章
关于本站 - 网站帮助 - 广告合作 - 下载声明 - 友情连接 - 网站地图 - 人才招聘
网站合作、内容监督、商务咨询:QQ: 9576619
Copyright ? 2005--2008 中国建站之家版权所有
粤ICP备05092265号