首页 > ActionScript 3 > flash as 3画圆、椭圆、矩形以及带圆角的矩形及复合矩形

flash as 3画圆、椭圆、矩形以及带圆角的矩形及复合矩形

这几个都是使用as3内置方法绘制的形状,为了便于绘制常见形状(如圆、椭圆、矩形以及带圆角的矩形),ActionScript 3.0 中提供了用于绘制这些常见形状的方法。它们是 Graphics 类的 drawCircle()、drawEllipse()、drawRect()、drawRoundRect() 和 drawRoundRectComplex() 方法。这些方法可用于替代 lineTo() 和 curveTo() 方法。但要注意,在调用这些方法之前,您仍需指定线条和填充样式。

以下示例重新创建绘制红色、绿色以及蓝色正方形的示例,其宽度和高度均为 100 个像素。以下代码使用 drawRect() 方法,并且还指定了填充颜色的 Alpha 为 50% (0.5):

var squareSize:uint = 100;
var square:Shape = new Shape();
square.graphics.beginFill(0xFF0000, 0.5);
square.graphics.drawRect(0, 0, squareSize, squareSize);
square.graphics.beginFill(0x00FF00, 0.5);
square.graphics.drawRect(200, 0, squareSize, squareSize);
square.graphics.beginFill(0x0000FF, 0.5);
square.graphics.drawRect(400, 0, squareSize, squareSize);
square.graphics.endFill();
this.addChild(square);
其它:
画圆 square.graphics.drawCircle(300,100,50); //300,100是坐标,50是半径
画椭圆 square.graphics.drawEllipse(180,150,50,80)//180,150是坐标,50,80是上半和下半
画矩形 square.graphics.drawRect(50,50,300,200);前面2个仍然是坐标,300是长200是宽如果相等就是正方形
带圆角的矩形 square.graphics.drawRoundRect(50,50,300,200,30,30)前面参数跟矩形一样,后2位30,30控制圆角
drawRoundRectComplex()是画出复合矩形

this.graphics.beginFill( 0 );
this.graphics.drawRoundRectComplex( 10, 10, 200, 200, 32, 80, 32, 80 );
this.graphics.endFill();
drawRoundRectComplex () 方法 调用如下

public static function drawRoundRectComplex(graphics:Graphics, x:Number, y:Number, width:Number, height:Number, topLeftRadius:Number, topRightRadius:Number, bottomLeftRadius:Number, bottomRightRadius:Number):void

使用绘制圆角的半径大小来绘制圆角矩形。必须在调用 drawRoundRectComplex() 方法之前通过调用 linestyle()、lineGradientStyle()、beginFill()、beginGradientFill() 或 beginBitmapFill() 来设置 Graphics 对象上的线条样式、填充,或同时设置二者。
参数
 graphics:Graphics — 绘制圆角矩形的 Graphics 对象。 
 x:Number — 相对于父显示对象注册点的水平位置(以像素为单位)。 
 y:Number — 相对于父显示对象注册点的垂直位置(以像素为单位)。 
 width:Number — 圆角矩形的宽度(以像素为单位)。 
 height:Number — 圆角矩形的高度(以像素为单位)。 
 topLeftRadius:Number — 左上角的半径(以像素为单位)。 
 topRightRadius:Number — 右上角的半径(以像素为单位)。 
 bottomLeftRadius:Number — 左下角的半径(以像素为单位)。 
 bottomRightRadius:Number — 右下角的半径(以像素为单位)。 
在 Sprite 或 MovieClip 对象中,使用 graphics 属性创建的绘制内容始终出现在该对象包含的所有子级显示对象的后面。另外,graphics 属性内容不是单独的显示对象,因此,它不会出现在 Sprite 或 MovieClip 对象的子级列表中。例如,以下 Sprite 对象使用其 graphics 属性来绘制圆,并且其子级显示对象列表中包含一个 TextField 对象:

var mySprite:Sprite = new Sprite();
mySprite.graphics.beginFill(0xFFCC00);
mySprite.graphics.drawCircle(30, 30, 30);
var label:TextField = new TextField();
label.width = 200;
label.text = "They call me mellow yellow...";
label.x = 20;
label.y = 20;
mySprite.addChild(label);
this.addChild(mySprite);
请注意,TextField 将出现在使用 graphics 对象绘制的圆的上面。

原创文章转载请注明出处:云飞扬IT的blog

本文链接: http://www.ajaxcn.net/archives/216

一键分享到:新浪微博分享  分享到网易微博    转贴到开心网  推荐到豆瓣  分享到QQ空间    RSS订阅
  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.