您的位置:首页 > 其它

[ActionScript 3.0] 运用Color类interpolateColor静态方法绘制渐变色

2015-06-19 17:10 281 查看
以下类可直接作为文档类测试,效果如图:



package
{
import fl.motion.Color;
import flash.display.GradientType;
import flash.display.Shape;
import flash.display.Sprite;
import flash.events.MouseEvent;
import flash.geom.Matrix;

/**
* ...
* @author FrostYen
*/
[SWF(width=700,height=800,backgroundColor=0x000000)]
public class GradientColor extends Sprite
{
public function GradientColor():void
{
setGradient(0xDFB920, 0x0000FF,70);
}

/**
* 绘制从一种颜色过渡到另一种颜色的色块
* @param fromColor 开始颜色值
* @param toColor 最终颜色值
* @param total 色块数量
*/
public function setGradient(fromColor:uint,toColor:uint,total:int):void
{
for (var i:int=0; i<total; i++)
{
var pro:Number=Math.ceil(1/(total-1)*i*100)/100;
var newcolor:uint = Color.interpolateColor(fromColor,toColor,pro);
var rect:Sprite=new Sprite();
rect.graphics.beginFill(newcolor);
rect.graphics.drawRect(0,0,30,30);
rect.graphics.endFill();
rect.x = 100 + 50 * (i % 10);
rect.y=100+50*Math.floor(i/10);
addChild(rect);
rect.name = newcolor.toString(16);
rect.addEventListener(MouseEvent.CLICK,onClick);
}

var shape:Shape = new Shape();
var cols:Array = [fromColor,toColor];
var alphas:Array = [1,1];
var rats:Array = [0,255];
var matr:Matrix = new Matrix();
matr.createGradientBox(480, 100, 0, 0, 0);
shape.graphics.clear();
shape.graphics.beginGradientFill(GradientType.LINEAR,cols,alphas,rats,matr);
//渐变填充颜色;
shape.graphics.drawRect(0,0,480,100);
shape.graphics.endFill();
shape.x = 100;
shape.y = this.stage.stageHeight - 150;
this.addChild(shape);
}

private function onClick(e:MouseEvent):void
{
trace(e.currentTarget.name);//得出点击对象的颜色值
}
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: