Document Class,中文直译为“文档类”。顾名思义,就是和文档绑在一起的类。
文档是啥?就是要和这个类绑在一起的Fla文件。
[1b]什么用处[/1b]?
这个玩意儿根本目的就是想把AS代码和Flash设计完全剥离。
从此,Fla里面只管设计,逻辑代码全部由外部的类来包办。
对于设计者和新手,黑羽可以打个比方,就好比[1b]三步走:[/1b]
1.把Fla里面所有代码集中到第一帧,
2.再把第一帧里的代码拷贝到外部的一个as文件里。
3.再按照AS3.0的形式,把这些代码放到这个类的构造函数里去。再根据这些个代码抽出一些类的属性和方法就OK了。
唔,这个比喻有很多小毛病。但比较直观,比较好理解,一步步来。
等你明白有哪些小毛病了,你已经不需要这个破比喻了。
对于程序开发者(比如c#)
Document Class就好比一个Entry,它的构造函数就相当于一个main函数。
[1b]教程相关例子下载[/1b]:
[1b]点击下载[/1b]
[1b]先来一个例子:[/1b]
上次建立的KingdaMC.fla和KingdaMC.as还在吧?
删了?重来一遍吧,本次要用到fla里面的加好链接类的元件,以及相关的KingdaMC类文件。
[1b]我们干两件事:[/1b]
1.新建一个Document Class类。
2.用上之前的那个Kingda.fla,绑定Document Class
[1b]1.新建一个as文件,命名为KingdaMCDocumentClass,记得要和fla在同一目录下:
[/1b]输入如下代码:
//因为在统一目录下,所以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
它要干的事很简单,就是用我们之前的KingdaMC类在舞台上创建十个KingdaMC实例,大小随机,位置随机。
[1b]2.用上之前的Kingda.fla,绑定KingdaMCDocumentClass。
[/1b]确保库中已有设好KingdaMC类链接的symbol。
设置方法如图:
[url=/Files/BeyondPic/2006-9/10/01.gif]
点击放大[/url]
先把第一帧代码全部删掉。Ctrl+Enter测试一把。是不是有十个MC出来啊。
然后再像图中那样加上第一帧代码,和舞台元件乐一乐。就是不按照Document Class规矩干干,呵呵。
[1b]那么它到底是什么?[/1b]
简单的说,是一个用来取代原有散乱的时间轴代码的标准解决办法。
当一个Fla文件被编译时,Document Class就被主动建立了。我们可以理解为Flash IDE偷偷加上了如下代码:
这样的好处是所有的时间轴逻辑都剥离到Document Class类文件中,一旦成为一个独立的类文件,那么很方便的可以和CVS软件结合起来。对团队合作(Designer + Coder)来说是一大利好。对新手和小项目来说,没什么优点和必要。
本文转自:http://www.5uflash.com/flashjiaocheng/Flash-as3-jiaocheng/1732.html