Вам нужен объект Matrix
, а также метод createGradientBox()
.
Я создал класс с именем RadialGraident
, который создает объект Shape
с кругом, имеющим радиальный градиент.Все, что вам нужно сделать, это проанализировать радиус, цвета, альфа и отношения при создании объекта, как в следующем примере:
package
{
import flash.display.Sprite;
import flash.events.Event;
public class Main extends Sprite
{
public function Main():void
{
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}// end function
private function init(e:Event = null):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
var radialGradient:RadialGradient = new RadialGradient(200, [0x0000FF, 0x00FF00], [1, 1], [0, 255]);
addChild(radialGradient);
}// end function
}// end class
}// end package
import flash.display.GradientType;
import flash.display.Shape;
import flash.geom.Matrix;
internal class RadialGradient extends Shape
{
public function RadialGradient(radius:Number, colors:Array, alphas:Array, ratios:Array)
{
var matrix:Matrix = new Matrix();
matrix.createGradientBox(radius * 2, radius * 2);
graphics.beginGradientFill(GradientType.RADIAL, colors, alphas, ratios, matrix);
graphics.drawCircle(radius, radius, radius);
graphics.endFill();
}// end function
}// end class