Graphics 类包含用于绘制线条、填充和形状的属性和方法。
无法通过 ActionScript 代码直接创建 Graphics 对象。我们通过 Shape、Sprite 和 MovieClip 对象里的graphics属性来进行绘图。
Graphics 类是最终类;无法从其派生子类。
一.画图前需要先定义线条或填充样式
lineBitmapStyle(bitmap:BitmapData, matrix:Matrix = null, repeat:Boolean = true, smooth:Boolean = false):void 指定一个位图,用于绘制线条时的线条笔触。
lineGradientStyle(type:String, colors:Array, alphas:Array, ratios:Array, matrix:Matrix = null, spreadMethod:String = "pad", interpolationMethod:String = "rgb", focalPointRatio:Number = 0):void 指定一种渐变,用于绘制线条时的笔触。
lineShaderStyle(shader:Shader, matrix:Matrix = null):void 指定一个着色器以用于绘制线条时的线条笔触。
lineStyle(thickness:Number = NaN, color:uint = 0, alpha:Number = 1.0, pixelHinting:Boolean = false, scaleMode:String = "normal", caps:String = null, joints:String = null, miterLimit:Number = 3):void 指定一种线条样式。 thickness:以点为单位表示线条的粗细;有效值为 0 到 255。如果未指定数字,或者未定义该参数,则不绘制线条。如果传递的值小于 0,则默认值为 0。值 0 表示极细的粗细;最大粗细为 255。如果传递的值大于 255,则默认值为 255。 pixelHinting:指定是否提示笔触采用完整像素。在 pixelHinting 设置为 true 的情况下,线条宽度会调整到完整像素宽度。在 pixelHinting 设置为 false 的情况下,对于曲线和直线可能会出现脱节。 scaleMode:用于指定要使用的比例模式: LineScaleMode.NORMAL -- 在缩放对象时总是缩放线条的粗细(默认值)。 LineScaleMode.NONE -- 从不缩放线条粗细。 LineScaleMode.VERTICAL -- 如果仅 垂直缩放对象,则不缩放线条粗细。 LineScaleMode.HORIZONTAL -- 如果仅 水平缩放对象,则不缩放线条粗细。 caps:用于指定线条末端处端点类型的 CapsStyle 类的值。有效值为:CapsStyle.NONE、CapsStyle.ROUND 和 CapsStyle.SQUARE。默认为CapsStyle.ROUND joints:指定用于拐角的连接外观的类型。有效值为:JointStyle.BEVEL、JointStyle.MITER 和 JointStyle.ROUND。默认为JointStyle.ROUND miterLimit:用于表示剪切斜接的极限值的数字。有效值的范围是 1 到 255(超出该范围的值将舍入为 1 或 255)。默认为3。此值只可用于 jointStyle 设置为 "miter" 的情况下。miterLimit 值表示向外延伸的尖角可以超出角边相交所形成的结合点的长度。
beginBitmapFill(bitmap:BitmapData, matrix:Matrix = null, repeat:Boolean = true, smooth:Boolean = false):void 用位图图像填充绘图区。
beginFill(color:uint, alpha:Number = 1.0):void 指定一种简单的单一颜色填充.
beginGradientFill(type:String, colors:Array, alphas:Array, ratios:Array, matrix:Matrix = null, spreadMethod:String = "pad", interpolationMethod:String = "rgb", focalPointRatio:Number = 0):void 指定一种渐变填充.
beginShaderFill(shader:Shader, matrix:Matrix = null):void 为对象指定着色器填充.
endFill() 结束填充。
二.画图
moveTo(x:Number, y:Number):void 将当前绘图位置移动到 (x, y)。 lineTo(x:Number, y:Number):void 使用当前线条样式绘制一条从当前绘图位置开始到 (x, y) 结束的直线;当前绘图位置随后会设置为 (x, y)。 cubicCurveTo(controlX1:Number, controlY1:Number, controlX2:Number, controlY2:Number, anchorX:Number, anchorY:Number):void 从当前绘图位置到指定的锚点绘制一条三次贝塞尔曲线。 curveTo(controlX:Number, controlY:Number, anchorX:Number, anchorY:Number):void 使用当前线条样式和由 (controlX, controlY) 指定的控制点绘制一条从当前绘图位置开始到 (anchorX, anchorY) 结束的二次贝塞尔曲线。 drawCircle(x:Number, y:Number, radius:Number):void 绘制一个圆。 drawEllipse(x:Number, y:Number, Number, height:Number):void 绘制一个椭圆。 drawRect(x:Number, y:Number, Number, height:Number):void 绘制一个矩形。 drawRoundRect(x:Number, y:Number, Number, height:Number, ellipseWidth:Number, ellipseHeight:Number = NaN):void 绘制一个圆角矩形。
三.高级绘图
readGraphicsData(recurse:Boolean = true):Vector.<IGraphicsData> 查询 Sprite 或 Shape 对象的矢量图形内容。 drawGraphicsData(graphicsData:Vector.<IGraphicsData>):void 提交一系列 IGraphicsData 实例来进行绘图。 drawPath(commands:Vector.<int>, data:Vector.<Number>, winding:String = "evenOdd"):void 提交一系列绘图命令来进行绘图。 drawTriangles(vertices:Vector.<Number>, indices:Vector.<int> = null, uvtData:Vector.<Number> = null, culling:String = "none"):void 呈现一组三角形(通常用于扭曲位图),并为其指定三维外观。