1、Graphics 类概述
Graphics 类包含一组可用来创建矢量形状的方法。支持绘制的显示对象包括 Sprite 和 Shape 对象。这些类中的每一个类都包括 graphics
属性,该属性是一个 Graphics 对象。以下是为便于使用而提供的一些辅助函数:drawRect()
、drawRoundRect()
、drawCircle()
和 drawEllipse()
。
无法通过 ActionScript 代码直接创建 Graphics 对象。如果调用 new Graphics()
,则会引发异常。
Graphics 类是最终类;无法从其派生子类。
2、Graphics 一点示例:
下面定义了一个GraphicsExample 类,使用 GraphicsExample 类绘制圆形、圆角矩形和正方形。执行下列步骤可完成该任务:
- 声明
size
属性以备日后在确定每个形状的大小时使用。
- 声明以下属性:将背景色设置为橙色、将边框颜色设置为深灰色、将边框大小设置为 0 个像素、将角半径设置为 9 个像素并将舞台边缘与其他对象之间的间距设置为 5 个像素。
- 使用在前面步骤中声明的属性以及使用 Graphics 类的内置方法,可在坐标 x = 0,y = 0 处绘制圆形、圆角矩形和正方形。
- 沿舞台顶部重新绘制每个形状,起点为 x = 5,y = 5,各形状之间的间隔为 5 个像素。
- package?{ ?
- ????import?flash.display.DisplayObject; ?
- ????import?flash.display.Graphics; ?
- ????import?flash.display.Shape; ?
- ????import?flash.display.Sprite; ?
- ?
- ????public?class?GraphicsExample?extends?Sprite?{ ?
-
????????private?var?size:uint?????????=?80; ?
-
????????private?var?bgColor:uint??????=?0xFFCC00; ?
-
????????private?var?borderColor:uint??=?0x666666; ?
-
????????private?var?borderSize:uint???=?0; ?
-
????????private?var?cornerRadius:uint?=?9; ?
-
????????private?var?gutter:uint???????=?5; ?
- ?
- ????????public?function?GraphicsExample()?{ ?
- ????????????doDrawCircle(); ?
- ????????????doDrawRoundRect(); ?
- ????????????doDrawRect(); ?
- ????????????refreshLayout(); ?
- ????????} ?
- ?
- ????????private?function?refreshLayout():void?{ ?
-
????????????var?ln:uint?=?numChildren; ?
- ????????????var?child:DisplayObject; ?
-
????????????var?lastChild:DisplayObject?=?getChildAt(0); ?
-
????????????lastChild.x?=?gutter; ?
-
????????????lastChild.y?=?gutter; ?
-
????????????for?(var?i:uint?=?1;?i?<?ln;?i++)?{ ?
-
????????????????child?=?getChildAt(i); ?
-
????????????????child.x?=?gutter?+?lastChild.x?+?lastChild.width; ?
-
????????????????child.y?=?gutter; ?
-
????????????????lastChild?=?child; ?
- ????????????} ?
- ????????} ?
- ?
- ????????private?function?doDrawCircle():void?{ ?
-
????????????var?child:Shape?=?new?Shape(); ?
-
????????????var?halfSize:uint?=?Math.round(size?/?2); ?
- ????????????child.graphics.beginFill(bgColor); ?
- ????????????child.graphics.lineStyle(borderSize,?borderColor); ?
- ????????????child.graphics.drawCircle(halfSize,?halfSize,?halfSize); ?
- ????????????child.graphics.endFill(); ?
- ????????????addChild(child); ?
- ????????} ?
- ?
- ????????private?function?doDrawRoundRect():void?{ ?
-
????????????var?child:Shape?=?new?Shape(); ?
- ????????????child.graphics.beginFill(bgColor); ?
- ????????????child.graphics.lineStyle(borderSize,?borderColor); ?
- ????????????child.graphics.drawRoundRect(0,?0,?size,?cornerRadius); ?
- ????????????child.graphics.endFill(); ?
- ????????????addChild(child); ?
- ????????} ?
- ?
- ????????private?function?doDrawRect():void?{ ?
-
????????????var?child:Shape?=?new?Shape(); ?
- ????????????child.graphics.beginFill(bgColor); ?
- ????????????child.graphics.lineStyle(borderSize,?borderColor); ?
- ????????????child.graphics.drawRect(0,?size); ?
- ????????????child.graphics.endFill(); ?
- ????????????addChild(child); ?
- ????????} ?
- ????} ?
- } ?