分享
 
 
 

Flash AS3:Document Class特色为我们带来了什么?

王朝other·作者佚名  2006-11-24
窄屏简体版  字體: |||超大  

ActionScript 3.0系列教程(2):AS3.0的类及绑定

ActionScript 3.0系列教程(3):Document Class特色为我们带来了什么?

Document Class,中文直译为“文档类”。顾名思义,就是和文档绑在一起的类。

文档是啥?就是要和这个类绑在一起的Fla文件。

什么用处?

这个玩意儿根本目的就是想把AS代码和Flash设计完全剥离。

从此,Fla里面只管设计,逻辑代码全部由外部的类来包办。

对于设计者和新手,黑羽可以打个比方,就好比三步走:

1.把Fla里面所有代码集中到第一帧,

2.再把第一帧里的代码拷贝到外部的一个as文件里。

3.再按照AS3.0的形式,把这些代码放到这个类的构造函数里去。再根据这些个代码抽出一些类的属性和方法就OK了。

唔,这个比喻有很多小毛病。但比较直观,比较好理解,一步步来。

等你明白有哪些小毛病了,你已经不需要这个破比喻了。

对于程序开发者(比如c#)

Document Class就好比一个Entry,它的构造函数就相当于一个main函数。

教程相关例子下载:点击下载

先来一个例子:

上次建立的KingdaMC.fla和KingdaMC.as还在吧?

删了?重来一遍吧,本次要用到fla里面的加好链接类的元件,以及相关的KingdaMC类文件。

我们干两件事:

1.新建一个Document Class类。

2.用上之前的那个Kingda.fla,绑定Document Class

1.新建一个as文件,命名为KingdaMCDocumentClass,记得要和fla在同一目录下:

输入如下代码:

//因为在统一目录下,所以package后面没有路径

package {

import flash.display.MovieClip;

public class KingdaMCDocumentClass extends MovieClip {

private var tempMC:KingdaMC; //临时变量,持有当时创建的KingdaMC的引用。

private var MAX_MCS:int = 10; //最多创建的KingdaMC数目

//构造函数,和类同名,在AS3.0中必须为public。不能用private,protected或者自定义的namespace

public function KingdaMCDocumentClass() {

var i:int; //新的数据类型int,只要是整数,就请用int。效率快过Number。

for (i = 0; i < MAX_MCS; i++) {

tempMC = new KingdaMC ();

//以下两行定义创建的KingdaMC形状大小随机

tempMC.scaleX = Math.random();

tempMC.scaleY = tempMC.scaleX;

//以下两行定义创建的KingdaMC位置在舞台上随机。

tempMC.x = Math.round(Math.random() * (this.stage.stageWidth - tempMC.width));

tempMC.y = Math.round(Math.random() * (this.stage.stageHeight - tempMC.height));

addChild(tempMC);

}

}

}

}

它要干的事很简单,就是用我们之前的KingdaMC类在舞台上创建十个KingdaMC实例,大小随机,位置随机。

2.用上之前的Kingda.fla,绑定KingdaMCDocumentClass。

确保库中已有设好KingdaMC类链接的symbol。

设置方法如图:

先把第一帧代码全部删掉。Ctrl+Enter测试一把。是不是有十个MC出来啊。

然后再像图中那样加上第一帧代码,和舞台元件乐一乐。就是不按照Document Class规矩干干,呵呵。

那么它到底是什么?

简单的说,是一个用来取代原有散乱的时间轴代码的标准解决办法。

当一个Fla文件被编译时,Document Class就被主动建立了。我们可以理解为Flash IDE偷偷加上了如下代码:

//path表示Document Class的包,如上一节中说过的org.kingda;

//DocClass是指Document Class的名字

import path.DocClass;

var TouTouDe:DocClass = new DocClass();

//实例名TouTouDe是我乱写的,哈哈。可能是默认的instance1之类的名字

这样的好处是所有的时间轴逻辑都剥离到Document Class类文件中,一旦成为一个独立的类文件,那么很方便的可以和CVS软件结合起来。对团队合作(Designer + Coder)来说是一大利好。对新手和小项目来说,没什么优点和必要。

下面说点高级讯息和运用:

有什么坏处?

坏处大大的有。那是相当的不习惯。

所有的舞台上的元件都别直接用属性来命名(比如说随便命名为BigKingda),不然就会出现以下出错讯息:

ReferenceError: Error #1056: 无法为 KingdaMCDocumentClass 创建属性 BigKingda。

当然这个限制只在与舞台上的元件,在元件类部直接命名子元件没有问题,在Timeline写相关的代码没问题。

重要:Document Class初始化顺序怎样?

黑羽个人的研究结果:一旦设置了Document Class,那么初始化顺序如下:

Document Class初始化 > 主时间轴代码执行 > 舞台元件绑定的类初始化 > 元件的时间轴代码初始化 >..

下面的层次按这样的规律循环。

Ok了,三大特色到此详细介绍完了。

尽量讲的浅俗易懂,大家明白就好。而且黑羽也加上了一些高级讯息供老鸟参考。喜欢的顶一把!^_^

下次开始AS3.0的本质之旅:AS 3.0的新数据类型及本质

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有