我是动作脚本的新手所以请耐心等待。
我刚开始使用超级和子类。
我的问题基本上是这样的:为什么当我使用这条线时
scoreDisplay.text = currentValue.toString();
使用行reset();
为什么不能说当前值= 0而不是?
这是超级
import flash.display.MovieClip;
public class Counter extends MovieClip
{
public var currentValue:Number;
public function Counter()
{
reset();
}
public function addToValue( amountToAdd:Number ):void
{
currentValue = currentValue + amountToAdd;
updateDisplay();
}
public function reset():void
{
currentValue = 0;
updateDisplay();
}
public function updateDisplay():void
{
}
}
}
和子类
import flash.text.TextField;
public class Score extends Counter
{
public function Score()
{
super();
}
override public function updateDisplay():void
{
super.updateDisplay()
scoreDisplay.text = currentValue.toString();
}
}
}
答案 0 :(得分:1)
要回答您的问题,如果您只将currentValue = 0;
放入计数器类'构造函数,然后您不更新显示列表。但是,reset
函数会调用updateDisplay
函数。因此,如果从覆盖super();
函数的子类调用updateDisplay
,那么超类将调用reset
来调用子类的updateDisplay
。
此外,在您当前的示例中,没有调用超级updateDisplay
函数的含义,因为它不包含任何内容。
它现在的方式实际上是一个比重置构造函数中的值更好的解决方案,因为您可以随时调用reset
函数而无需再次调用构造函数,该构造函数也可能包含其他元素。我永远不会将构造函数用作"重置器"。