我知道flash.display.Graphics
类是final,不能扩展,也不能替换sprite中的对象。但我需要改变它的行为或伪造改变的行为。通常在OOP中我会扩展一个类,覆盖它的方法并调用我想要的超级方法。但由于Graphics
无法做到这一点,实现这一目标的最佳技术是什么?
Graphics
类的方法吗? <小时/> 假设我想绘制正方形而不是圆形:
public class Graphics2 extends Graphics
{
override public function drawCircle(x: NUmber, y: Number, radius: Number): void
{
super.drawRect(x - radius, y - radius, 2 * radius, 2 * radius);
}
}
这是我希望我能做到的。我该如何伪造它?最后,我希望有代表不同绘图样式的对象。当我替换我的Graphics2
对象时,我只需更改完整的绘图样式(圆圈转到正方形等)。
答案 0 :(得分:1)
为什么不将自己的类映射到无法扩展的方法?
public class Graphics2 {
import flash.display.Graphics;
public static function drawCircle(obj:DisplayObject, x:Number, y:Number, r:Number):void {
obj.Graphics.drawRect(x - radius, y - radius, 2 * radius, 2 * radius);
}
}
不可覆盖的类将始终保留,并且扩展它的类将始终使用该最终方法,因此任何更改都必须映射到实际函数(IMHO)。