关于flash as2.0类继承的一个问题,请高手帮帮忙
请看代码:
class A
{
public var componentX:Number;
public function A(){
componentX=0;
};
public function mm(){
trace( "A.componentX= "+componentX);
}
}
class B extends A
{
var componentX:Number;
function B()
{
super();
super.mm();//out1:A.componentX=0;
componentX = 6;
trace( "super.componentX = "+super.componentX);//out2
//
}
}
var a:B=new B();
以上代码我想实现在out2处输出 super.componentX = 6;
但实际运行结果是 super.componentX = undefined;
请问这是怎么回事?
而下面的例子能实现这个效果,能解释下有什么区别,为什么吗?
class org.guRuSoft.Bumper.BumpMapper extends flash.filters.DisplacementMapFilter
{
var componentX;
function BumpMapper()
{
super();
trace( "super.componentY = "+super.componentY);//out:super.componentY=0;
componentX = 2;
trace( "super.componentY = "+super.componentY);//out:super.componentY=2
}
}
//****************************************************************************
// ActionScript Standard Library
// flash.filters.DisplacementMapFilter object
//****************************************************************************
import flash.display.BitmapData;
import flash.geom.Point;
intrinsic class flash.filters.DisplacementMapFilter extends flash.filters.BitmapFilter
{
var mapBitmap:BitmapData;
var mapPoint:Point;
var componentX:Number;
var componentY:Number;
var scaleX:Number;
var scaleY:Number;
var mode:String;
var color:Number;
var alpha:Number;
public function DisplacementMapFilter(mapBitmap:BitmapData,
mapPoint:Point,
componentX:Number,
componentY:Number,
scaleX:Number,
scaleY:Number,
mode:String,
color:Number,
alpha:Number);
public function clone():DisplacementMapFilter;
}
多谢多谢!等待ing..............
[解决办法]
据我看来,您的把super.method([arg1, ..., argN])和super([arg1, ..., argN])搞混了,只要把程序中的trace( "super.componentX = "+super.componentX);改动成trace( "super.componentX = "+super(componentX));,就能得到你要的结果。
class B extends A
{
var componentX:Number;
function B()
{
super();
super.mm();//out1:A.componentX=0;
componentX = 6;
trace( "super.componentX = "+super(componentX));//out2
//
}
}
[解决办法]
还有CLASS A 中并没有componentX函数,固会输出undefined。