AS-3 - 如何创建不同的绘制样式



我知道flash.display.Graphics类是最终的,不能扩展,也不能替换精灵中的对象。但我需要改变它的行为或假装改变的行为。通常在 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对象时,我只是改变了完整的绘制风格(圆形变成正方形等)。

为什么不将自己的类映射到无法扩展的方法?

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);
    }
}

不可重写的类将始终保持该状态,并且扩展它的类将始终使用该最终方法,因此任何更改都必须映射到实际函数(恕我直言)。

相关内容

  • 没有找到相关文章

最新更新