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"文件。(即“有名”的类文件)。

输入如下代码:

 

ContractedBlock.gif ExpandedBlockStart.gif
None.gif
None.gif
//代码如下
None.gif
None.gif
//package 见讲解1
None.gifpackage {                                        
None.gif   
import flash.display.MovieClip;     //讲解2
None.gif   
import flash.events.MouseEvent;  
None.gif
None.gif   
//讲解3
None.gif   public 
class KingdaMC extends MovieClip { 
None.gif        public function KingdaMC() {
None.gif         trace(
"Kingda created: " + this.name);
None.gif        
None.gif         this.buttonMode 
= true;
None.gif         this.addEventListener(MouseEvent.CLICK, clickHandler);
None.gif         this.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownListener);
None.gif         this.addEventListener(MouseEvent.MOUSE_UP, mouseUpListener);
None.gif      }
None.gif      private function clickHandler(event:MouseEvent):void {
None.gif         trace(
"You clicked the ball");
None.gif      }
None.gif      function mouseDownListener(event:MouseEvent):void {
None.gif         this.startDrag();
None.gif      }
None.gif      function mouseUpListener(event:MouseEvent):void {
None.gif         this.stopDrag();
None.gif      }
None.gif   }
None.gif}
None.gif

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

 

None.gif
None.gif
None.gif
//  ActionScript  2.0
None.gif
class  org.kingda.KingdaMC {  
None.gif}
None.gif
None.gif
//  ActionScript  3.0
None.gifpackage org.kingda {
None.gif  public 
class  KingdaMC {}
None.gif}
None.gif

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

讲解3:
类在AS3.0中也有public 和 internal的区分了。
public 表示这个类可以在任何地方导入使用。
internal表示这个类只能在同一个package里面使用。
不写,就默认为internal这个新的关键字。
还有一个属性是final,表示这个类不能被继承了,继承树到此为止。
说白了,这三个属性都是用来让我们更加规范的管理类之间的关系,以便将来修改时心里有谱,大大的方便了修改。

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

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

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

01.gif
点击看大图

在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,黑羽做了少量的中文改动。她原来的源码例子点此下载

转载于:https://www.cnblogs.com/savageworld/archive/2006/07/21/456348.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值