Graphics类创建渐变线条和填充的方法

本文介绍了如何在AS3.0中使用Graphics类的beginGradientFill()和lineGradientStyle()方法实现渐变填充和笔触效果,详细解释了这两种方法的八个参数及其作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转自:http://bbs.jcwcn.com/thread-252176-1-1.html
graphics 对象除了可以通过lineStyle()和beginFill()方法来设置笔触和填充的纯色外,还可以通过lineGradientStle() 和beginGradientFill()方法来设置渐变笔触和填充。
当然Graphics类仍然是以Shape、Sprite 或MovieClip 实例的属性这个身份来展现自己的方法。
渐变笔触是使用 lineGradientStyle() 方法创建的;
渐变填充是使用 beginGradientFill() 方法创建的;
以上两种方法有8个相同的参数。前四个参数是必需的,即类型、颜色、Alpha 以及比率。其余四个参数是可选的,但对于高级自定义非常有用。
先来了解基本的前4个参数。
第一个参数: 指定要创建的渐变类型。可接受的值是 GradientFill.LINEAR 或GradientFill.RADIAL。
第二个参数: 指定要使用的颜色值的数组。在线性渐变中,将从左向右排列颜色。在放射状渐变中,将从内 到外排列颜色。数组颜色的顺序表示在渐变中绘制 颜色的顺序。
第三个参数: 指定前一个参数中相应颜色的 Alpha 透明度值。
第四个参数: 指定比率或每种颜色在渐变中的重要程度。可接受的值范围是 0-255。这些值并不表示任何宽度或高度,而是表示在渐变中的位置; 0 表示渐变开始,255 表示渐变结束。比率数组必须按顺序增加(例如,[0, 63, 127, 190, 255]),并且包含的条目数与第二个和第三个参数中指定的颜色和 Alpha 数组相同。

理论OK了,现在要实践下:
渐变笔触ineGradientStyle() 方法
AS:
var s:Shape=new Shape();   
var type:String=GradientType.LINEAR;
//这是第一 个参数,也可以将值设置为GradientFill.RADIAL var color:Array=[0x54d580,0x11056a];   //这是第二个参 数,一个颜色数组(颜色就随便啦)
var alph:Array=[1,1]; ;// 这是第三个参数,设置各个颜色的透明度,和上面的数组相对应
var ratio:Array=[125,225]; //第四个参数,指定比率或每种颜色在渐变中的重要程度,也是要和第一和第一个参数相对应的
s.graphics.lineStyle(2); //设置笔触的粗细,要在调用lineGradientStyle方法之前调用lineStyle方法,否则线条样式的 值将为 undefined(这结果可是会导致所画的线条无法显示,我自己就吃过这方法的亏)
s.graphics.lineGradientStyle(type,color,alph,ratio); //利用上面的参数设置渐变样式. s.graphics.moveTo(0,0); // 设置线条起点(10,10)
s.graphics.lineTo(250,250); //画线到线条结束点(250,250)
addChild(s) ; //显示线条

渐变填充 beginGradientFill() 方法
AS:
var sh:Shape=new Shape();

sh.graphics.beginGradientFill(GradientType.RADIAL,[0x00ff00,0xffdd00],[1,1],[0,225]);   //设置渐变填充样式,把相应值直接赋给各参数值,不通过变量的传递
sh.graphics.moveTo(0,0);   //设置曲线起点
sh.graphics.curveTo(200,100,200,100);   //画曲线
sh.graphics .curveTo(200,300,200,300);   // 画曲线
sh.graphics.curveTo(100,300,100,300);   // 画曲线
addChild(sh);   //显示填充结果
设置了线条样式之后,可调用 clear() 方法会将线条样式设置回 undefined

Graphics类的beginGradientFill() 和 lineGradientStyle()方法的后四个参数解析
与beginGradientFill() 和 lineGradientStyle()方法的前四个参数不同的是,后四个参数是可选的,也就是说是可有可无的!但却可以让渐变更加的丰富多彩
第五个参数: matrix;……一个由 flash .geom.Matrix 类定义的转换矩阵。 flash.geom.Matrix 类包括 createGradientBox() 方法,通过该方法可以方便地设置矩阵!
第六个参数: spreadMethod:String (default = "pad");……用于指定要使用哪种 spread 方法的 SpreadMethod 类的值
第七个参数: interpolationMethod:String (default = "rgb") ……用于指定要使用哪个值的 InterpolationMethod 类的值:
第八个参数:   focalPointRatio:Number (default = 0) — 一个控制渐变的焦点位置的数字。

下面分别来仔细的解剖以上四个参数!
第五个参数matrix类
第五个参数的值,其实就是用Matrix类的createGradientBox方法设置的一个转换矩阵!那接下来就讲讲这个神秘的 createGradientBox()方法;
createGradientBox()方法有以下5个参数:
1.width:Number……渐变框的宽度;
2.height:Number……渐变框的高度;
3.rotation:Number(default=0) ……旋转量(以弧度为单位);
4.tx:Number(default=0)……沿X轴向平移的距离(以像素为单位)以值将偏移width参数的一半;
5.ty:Number(default=0)……沿Y轴向下平移的距离(以像素为单位)以值将偏移width参数的一半
AS: var matr:Matrix=new Matrix();
Matr.createGradientBox(1,1,10,0,0);

以上5个参数的不同组合将会给渐变还来不同效果 哦!至于效果如何就靠大家自己去动手咯!
第六个参数SpreadMethod类
SpreadMethod 类为 Graphics 类的 beginGradientFill() 和 lineGradientStyle() 方法中的 spreadMethod 参数提供值。SpreadMethod提供以下三个常量!使用的不同常量会给渐变带来不同的外观,记得自己动手去试下,这样才能更好的学习嘛!
SpreadMethod.PAD
SpreadMethod.REPEAT
SpreadMethod.REFLECT
第七个参数interpolationMethod类
InterpolationMethod类为 Graphics.beginGradientFill()和 Graphics.lineGradientStyle() 方法中的 interpolationMethod 参数提供值。InterpolationMethod类提供以下二个常量,使用不同的常量会给渐变带来不同的外观
LINEAR-RGB常量:指定应使用线性 RGB 插值方法。
RGB常量:指定应使用 RGB 插值方法。
第八个参数focalPointRatio:Number
focalPointRatio:Number (default = 0) — 一个控制渐变的焦点位置的数字。 0 表示焦点位于中心。 1 表示焦点位于渐变圆的一条边界上。 -1 表示焦点位于渐变圆的另一条边界上。 小于 -1 或大于 1 的值将舍入为 -1 或 1。这个参数单看这此文字是不能完全明白的,还是那句话,大家自己动手试吧!理论结合实践才是真理!

综合AS:
var sh:Shape=new Shape();
var spreadMethod:String=SpreadMethod.REPEAT      
//SpreadMethod.PAD,SpreadMethod.REPEAT, SpreadMethod REFLECT
var matr:Matrix=new Matrix();
matr.createGradientBox (10,10,50,10,10);
var interpolationMethod:String =InterpolationMethod.LINEAR_RGB    //InterpolationMehtod.RGB
var focalPointRatio=0;  //1
sh.graphics.beginGradientFill(GradientType.RADIAL,[0x00ff00,0xffdd00],[1,1],[0,225],matr,spreadMethod,interpolationMethod,focalPointRatio);
sh.graphics.moveTo(1,1);
sh.graphics.curveTo(200,100,200,100);
sh.graphics .curveTo(200,300,200,300);
sh.graphics.curveTo(100,300,100,300)
addChild(sh);

好啦,现在Graphics类的beginGradientFill() 和 lineGradientStyle()方法的8个参数都讲完了,虽然有此个参数不是经常用到,不知道也没关系!但我自己还是比较喜欢完整的东西!上面的 文字我是从别的资料里COPY过来,稍做整理而已。希望在AS3.0的学习中能给你带来一点点帮助,嘻嘻……那么现在,下课吧!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值