flash as 教程:建构函数(constructor)

更新时间:15-10-23 16:32 热度:377
 

建构函数(constructor)
建构函数是指一个姓名与类名相同的办法。当该类被实际的例子化时,该函数会被半自动调配使用,也可以传入参变量,例如:
首先,开创一个类:
package {
public class myclass {
public function myclass(arg:string) {
trace("constructed");
trace("you passed " arg);
}
}
}
而后,如果办公在 flash cs3 ide(集成研发背景)中,在时间轴上开创该实际的例子:
var myinstance:myclass = new myclass("hello");
最后结果输出:
constructed
you passed hello
秉承(inheritance)
一个类可以从另一个类中秉承(inherit)和扩展(extend)而来。这就意味着它取得了另一个类全部的属性和办法(除开那一些被 private 打掩护住的属性)。所生成的子类(分化类)还可以增加更多的属性和办法,或更改父类(基类)已有的属性或办法。要作别开创两个类来成功实现(两个独立的 .as文件),例如:

不要遗忘,每个类都务必在其自身的文件中,文件名为该类的类名,扩展名 .as,所以一定要有 mybaseclass.as 文件和 mysubclass.as 文件。因为这个,在运用 flash cs3 ide 时,保留的 fla 文件,要与这两个类在同一个文件夹。
下边代码会出产两个实际的例子,把它写合乎时尚间轴看看会发生啥子:
var base:mybaseclass = new mybaseclass();
base.sayhello();
var sub:mysubclass = new mysubclass();
sub.sayhello();
sub.saygoodbye();
第1个实际的例子没关系可说的,值当注意的是第二个实际的例子中的 sayhello 办法,固然在 mysubclass 中没有定义 sayhello,但它却是秉承自 mybaseclass 类的。另一个值当注意的是,增加了一个新的办法 saygoodbye,这是父类所没有的。
下边说说,在子类中怎么样变更一个父类中已存在的办法。在 as 2 中,我们可以只消从新定义这个办法就可以了。而在 as 3 中,则不可少明确地开具 override 关键字,来施行从新定义。
package {
public class mysubclass extends mybaseclass {
override public function sayhello():void {
trace("hola from mysubclass");
}
public function saygoodbye():void {
trace("goodbye from mysubclass");
}
}
}
请注意,原来的 sayhello 办法被重写,再调配使用 mysubclass 后,就有了新的信息。额外,私人所有人员也不可以被重写,由于他们只能被他们自身的类过访。
movieclip/sprite 子类
我们可以自个儿写一个类,而后让另一个类去秉承它。在 as 3 中,全部代码都不是写在时间轴上的,那末他们一着手都要秉承自 movieclip 或 sprite。 movieclip 类是影片儿剪接对象属性和办法的 actionscript 模型板。它涵盖我们所知道得清楚的属性如:影片儿的 x,y 坐标,缩放等,这些个在 as 3 中的变动半大。
as 3 还增加了 sprite 类,一般把它了解为不在时间轴上的影片儿剪接。众多事情状况下,只运用代码操做对头象,并不牵涉到时间轴和帧,这时就应当运用 sprite 这个轻型的类。假如一个类秉承自 movieclip 或 sprite ,那末它会半自动领有该类全部的属性和办法,我们还可以为这个类增加特别的属性和办法。
例如,游戏预设一个宇宙船的对象,我们期望它领有一个图形,况且在荧幕的某个位置移动,旋转,并为动画添加 enterframe 侦听器,还有鼠标、键盘的侦听等。这些个都可以由 movieclip 或 sprite 来完成,所以就要秉承自他们。同时,还可以增加一点属性如:速度(speed)、油量(fuel)、毁坏度(damage),还有像开始飞行(takeoff)、坠落(crash)、射击(shoot)或是自毁(selfdestruct)等办法。那末这个类约略就是这样:
package {
import flash.display.sprite;
public class spaceship extends sprite {
private var speed:number = 0;
private var damage:number = 0;
private var fuel:number = 1000;
public function takeoff():void {
//…
}
public function crash():void {
//…
}
public function shoot():void {
//…
}
public function selfdestruct():void {
//…
}
}
}
注意,首先要导入 flash.display 包中的 sprite 类,假如要导入movieclip类,一样也需求导入这个相同的包 flash.display.movieclip 类。