AS3 - 覆盖不存在的类设置器?

时间:2013-07-18 14:41:16

标签: actionscript-3 setter

我正在关注AS3中有关OOP和setter / getter以及覆盖的教程 在本教程中,我们创建了一个extends sprite的类,用作包含shapetextfield的按钮。

教程作者演示如果您使用该类的height属性(从DisplayObject一直继承,如下所示:

button.height = 100;

然后,按钮的shape不仅会被放大,而且textfield和其中的字体也会按比例放大。作者不希望这样,他希望只扩展shape,同时保留字体大小。他通过以下方式做到了这一点:

override public function set height(h:Number):void {
// Custom code here.
}

这让我很困惑,因为仔细查看了Adobe的AS3 API参考,我看不到任何设置method高度的DisplayObject。我只能看到property的{​​{1}}。

在进入height之前,作者确实解释了override,所以我理解了这个概念。但是,我无法理解你如何setters and getters override似乎不存在? 我原本假设能够覆盖任何东西必须在那里。

如果有人能够解释这种技巧,我将非常感激,或者请指点我对此进行更多阅读。

1 个答案:

答案 0 :(得分:2)

属性并不总是公共变量。事实上,DisplayObject的{​​{1}}属性同时具有setter和getter函数,因此存在setter并且可以被覆盖。