构造函数是指一个名字与类名相同的方法。当该类被实例化时,该函数会被自动调用,也可以传入参数,例如:
首先,创建一个类:
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文件),例如:
下面代码会生产两个实例,把它写入时间轴看看会发生什么:
var base:MyBaseClass = new MyBaseClass();
base.sayHello();
var sub:MySubClass = new MySubClass();
sub.sayHello();
sub.sayGoodbye();
第一个实例没什么可说的,值得注意的是第二个实例中的 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");
}
}
}
MovieClip/Sprite 子类
我们可以自己写一个类,然后让另一个类去继承它。在 AS 3 中,所有代码都不是写在时间轴上的,那么它们一开始都要继承自 MovieClip 或 Sprite。 MovieClip 类是影片剪辑对象属性和方法的 ActionScript 模板。它包括我们所熟悉的属性如:影片的 x,y 坐标,缩放等,这些在 AS 3 中的变化不大。
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 类。#p#分页标题#e#
评论 {{userinfo.comments}}
{{child.content}}
{{question.question}}
提交