想给FLASH的Date类增加一些农历的数据.当然是继承Date再增加一些方法啦.
但在做的过程发现在以前从没有碰到过的问题.
农历的数据是从公历数据换算过来的.而Date类在实例过程中有好几中方式.
怎么样继承父类的构造函数,在flash帮助文档中"重写方法和属性"中得到结果结论:
Widget.as类文件
class Widget {
public static var widgetCount:Number = 0;
public function Widget() {
Widget.widgetCount++;
}
public function doSomething():Void {
trace("Widget::doSomething()");
}
}
SubWidget.as类文件
class SubWidget extends Widget {
public function SubWidget() {
trace("Creating subwidget # " + Widget.widgetCount);
doSomething();
}
}
在新建的flash文档中
var sw1:SubWidget = new SubWidget();
var sw2:SubWidget = new SubWidget();
输出结果:
Creating subwidget # 1
Widget::doSomething()
Creating subwidget # 2
Widget::doSomething()
结论是子类继承父类,也继承了父类的构造函数.但是Date类构建函数是带参数,而且还是有多种方式.
最后,终于在flash帮助文档中找到了super条目.以前一直没有注意.以前做的东西也很少有这样父类,子类,爷类的.
super用法:
super.method([arg1, ..., argN])
super([arg1, ..., argN])
第一种语法格式可以在对象方法体内使用,用于调用方法的超类版本,而且可以选择向超类方法传递参数 (arg1 … argN)。这对于创建某些子类方法很有用,这些子类方法在向超类方法添加附加行为的同时,又调用这些超类方法执行其原始行为。
第二种语法格式可以用于构造函数体内,用以调用此构造函数的超类版本,而且可以选择向它传递参数。这对于创建子类很有用,该子类在执行附加的初始化的同时,又调用超类构造函数执行超类初始化。
我的农历date类 LunarCalendar.as,其实的参数完全和date类的参数一样.
class LunarCalendar extends Date {
public function LunarCalendar(yearOrTimevalue:Number, month:Number, date:Number, hour:Number, minute:Number, second:Number, millisecond:Number) {
super(yearOrTimevalue, month, date, hour, minute, second, millisecond);
}
}
Tags: actionscript3, flash