分享
 
 
 

Flash AS3.0的类及绑定

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

作者的blog: www.kingda.org

ActionScript 3.0系列教程(1):与Flash9先来一次亲密接触!

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

这次我们开始介绍AS3.0中的类如何和库中元件绑定,和特殊的Document Class设计。

总共4步:

1.建一个标准的AS3.0类 (暂命名为KingdaMC,多么伟大的名字啊,简称“有名”)

2.新建一个元件,并设置它的Linkage和上面的类绑定。

3.在时间轴上写代码,用AS3.0代码创建n份“有名”。

4.删掉时间轴上代码,使用Flash 9新特色Document Class在舞台上创造n份“有名”。just 体验一把。

(写起来才知道要讲的内容多啊,晕,打了两个小时,累了,本节专门只讲讲AS3.0的类吧,其余的慢慢再讲)

在创建AS3.0之前,请允许我先对AS3.0类的语法和继承设计表示敬意。与标准的完全兼容,更好更严格的封装特性,特别是命名空间(name space)的引入。从今天起从AS3.0起, 在OOP层面上,AS3.0已经和Java,C#平起平坐了,甚至在某些方面(比如name space)比java更有意思。

让俺对AS2.0老鸟说几句憋在心里的激动之语:

如果说AS2.0只是外表接近OOP标准语言,内在还是乱糟糟的AS1.0脚本语言,那么AS3.0不论是从OOP设计级别,还是从编译器级别(如,对弱引用—— week reference—— 的支持)来评估的都是标准、正宗、强大的语言。

从AS3.0起,我们ActionScript 开发者可以挺起胸口,俺们是真正的行业标准级程序员。

在我继续教程之前,我要唱首歌给大家听:

AS3的英明,绝对不是一句两句能说清!~~~~~~

打完,收工。

1.建立AS3.0类文件

类文件是干嘛用的?比如说,我们想让一个对象(Object)有很多功能,比如说这个对象是MovieClip型的,支持拖拽,支持双击等等。那么先在一个类文件里写清楚这些要求和实现方法,然后就可以用这个类创建许多实例,这些实例就全具有了这些功能。写一次,就能用很多次,多好。最重要的是它还可以通过继承来重用很多代码,为将来节省更多的时间。

废话少说,Ctrl+N打开“新建”窗口,选择建立“ActionScript file”,Ctrl+S,暂存为"KingdaMC.as"文件。(即“有名”的类文件)。

输入如下代码:

//代码如下

//package 见讲解1

package {

import flash.display.MovieClip; //讲解2

import flash.events.MouseEvent;

//讲解3

public class KingdaMC extends MovieClip {

public function KingdaMC() {

trace("Kingda created: " + this.name);

this.buttonMode = true;

this.addEventListener(MouseEvent.CLICK, clickHandler);

this.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownListener);

this.addEventListener(MouseEvent.MOUSE_UP, mouseUpListener);

}

private function clickHandler(event:MouseEvent):void {

trace("You clicked the ball");

}

function mouseDownListener(event:MouseEvent):void {

this.startDrag();

}

function mouseUpListener(event:MouseEvent):void {

this.stopDrag();

}

}

}

讲解1: AS2.0中我们使用的是全饰名称来声明类,通俗说,包括了类的路径在类名前。AS3.0则把路径提取出放在package这个关键字后面。本文例子中的类文件和Fla文件在同一个目录下,因此 package后面没有什么东西。如果类文件在 org目录下的kingda目录里,那么就要写成 :

// ActionScript 2.0

class org.kingda.KingdaMC {

}

// ActionScript 3.0

package org.kingda {

public class KingdaMC {}

}

你在package中可以定义好几个类,不用再写全饰名称了。但我不推荐这样做。一个文件一个类比较好管理。

讲解3:

类在AS3.0中也有public 和 internal的区分了。

public 表示这个类可以在任何地方导入使用。

internal表示这个类只能在同一个package里面使用。

不写,就默认为internal这个新的关键字。

还有一个属性是final,表示这个类不能被继承了,继承树到此为止。

说白了,这三个属性都是用来让我们更加规范的管理类之间的关系,以便将来修改时心里有谱,大大的方便了修改。

同时,对架构的设计能力要求更高,新手们和小项目还是多使用public吧。越到后来你会越喜欢internal的。我只要看到internal和private这两个关键字,心中就无比的稳定和舒服。想来不少programmer和我都会有同感吧。

2.新建一个元件,并设置它的Linkage和上面的类绑定。

和教程第一章一样,画一个方块,按F8转成MovieClip,再在库中右键点击它,选择"linkage"

在Class里面写上KingdaMC。注意,id输入框已经被废止了。因为在AS3.0中,再也没有MovieClip.attachMovie(), MovieClip.createEmptyMovieClip(), 以及 MovieClip.createTextField()的存在了。

所有舞台的可见对象都由new来创建。

比如说本例中,symbol1绑定了KingdaMC,那么如果我要在舞台上创建一个KingdaMC,只要写:

var b1:Kingda = new KingdaMC();

addChild(b1);

即可。

还记得以前那些乱七八糟的创建影片和组件的语法吗?什么createClassObject(),DepthManager的createChildAtDepth(),createClassChildAtDepth(),等等等等。我的一个java同事刚刚学习AS时,被上面哪些乱乱的创建函数弄得一头雾水。统统没有了。只有一统天下的new ClassName(),多标准哪,多舒服啊,多好学啊。

所以说,没学AS2.0直接学AS3.0绝对是新手的福气。

第二句,addChild这个很重要。

光有第一句new可不行。那只是告诉Flash我建了一个名字叫b1的KingdaMC要显示,但还没告诉Flash什么时候显示呢。

你什么时候打addChild(b1),那Flash才会把它显示在舞台上。怎么样,多简单。

其实这里省略了一个this。如果你有一个MovieClip名叫BigKingda,希望在这个BigKingda里面加上一个KingdaMC实例,那么就要写:

BigKingda.addChild(b1);

非常简单。

Ctrl+Enter测试,发现创建的KingdaMC,支持拖拽。

大家试着用代码多创建几个KingdaMC,比如用for循环来建个10个8个的来玩玩。

好了,累了,要歇歇了,下次讲Document Class。

本节代码例子参考了Jen deHaan的教程,原因很简单,她选的例子很好的说明了绑定和Document Class,黑羽做了少量的中文改动。她原来的源码例子点此下载

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
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- 王朝網路 版權所有