/**
* Copyright dizgid ( http://wonderfl.net/user/dizgid )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/nRoB
*/
package {
import flash.display.GradientType;
import flash.geom.Matrix;
import flash.geom.Point;
import flash.display.Graphics;
import flash.display.Sprite;
public class FlashTest extends Sprite {
public function FlashTest() {
// write as3 code here..
var sp:Sprite = new Sprite();
this.addChild(sp);
var g:Graphics = sp.graphics;
beginLinearGradientFill(g, [0xffff00, 0xff0000], [1,1], [0, 255], new Point(100,100), new Point(200, 200));
//g.beginFill(0xff0000);
g.moveTo(100,100);
g.lineTo(200, 200);
g.lineTo(300,100);
g.lineTo(200, 0);
}
// ----------------------------------------------
// http://blog.jactionscripters.com/2009/05/31/smart-gradient-api/
//
// API for Linear Gradient Fill
// beginLinearGradientFill([0x000000,0xfffffff],[1,1],[0,255], startPoint:Point, endPoint:Point);
//
// API for Radial Gradient Fill
// beginRadialGradientFill([0x000000,0xffffff],[1.0,1.0],[0,255], centerPoint:Point, radius:Number);
// ----------------------------------------------
public function beginRadialGradientFill( graphics:Graphics,
colors:Array,
alphas:Array,
ratios:Array,
centerPoint:Point,
radius:Number,
spreadMethod:String="pad",
interpolationMethod:String="rgb"):void{
var mat:Matrix = new Matrix();
mat.createGradientBox(radius * 2, radius * 2, 0, centerPoint.x - radius, centerPoint.y - radius);
graphics.beginGradientFill(GradientType.RADIAL, colors, alphas, ratios, mat, spreadMethod, interpolationMethod)
}
public function beginLinearGradientFill( graphics:Graphics,
colors:Array,
alphas:Array,
ratios:Array,
startPoint:Point,
endPoint:Point,
spreadMethod:String="pad",
interpolationMethod:String = "rgb"):void {
var dx:Number = endPoint.x-startPoint.x;
var dy:Number = endPoint.y-startPoint.y;
var dist:Number = Math.sqrt(dx*dx+dy*dy);
var rad:Number = Math.atan2(dy,dx);
var offsetX:Number = -(dist - Math.cos(rad)*dist)*0.5 + startPoint.x;
var offsetY:Number = -(dist - Math.sin(rad)*dist)*0.5 + startPoint.y;
var mat:Matrix = new Matrix();
mat.createGradientBox(dist,dist,rad,offsetX,offsetY);
graphics.beginGradientFill(GradientType.LINEAR, colors, alphas, ratios, mat, spreadMethod, interpolationMethod)
}
}
}