package {
import flash.display.*;
import flash.filters.*;
import flash.geom.Matrix;
//グラデーションの表示
[SWF(width=240, height=240, backgroundColor=0xFFFFFF)]
public class GradientEx extends Sprite {
private var color0:int;//色0
private var alpha0:int;//α値0
private var color1:int;//色1
private var alpha1:int;//α値1
//コンストラクタ
public function GradientEx() {
//矩形の追加
setColor(0xFF0000,1,0x0000FF,1);
var rect:Shape=gradientRect(40,40,80,80);
addChild(rect);
//円の追加
setColor(0xFFFF00,1,0x00FF00,1);
var circle:Shape=makeCircle(40+40,140+40,40);
addChild(circle);
}
//色の指定
private function setColor(color0:int,alpha0:int,
color1:int,alpha1:int):void {
this.color0=color0;
this.alpha0=alpha0;
this.color1=color1;
this.alpha1=alpha1;
}
//矩形の追加
private function gradientRect(x:int,y:int,w:int,h:int):Shape {
var rect:Shape=new Shape();
var matrix:Matrix=new Matrix();
matrix.createGradientBox(w,h,Math.PI/2,x,y);
rect.graphics.beginGradientFill(
GradientType.LINEAR,
[color0,color1],
[alpha0,alpha1],
[0,255],
matrix);
rect.graphics.drawRect(0,0,w,h);
rect.x=x;
rect.y=y;
rect.graphics.endFill();
return rect;
}
//円の追加
private function makeCircle(x:int,y:int,r:uint):Shape {
var circle:Shape=new Shape();
var matrix:Matrix=new Matrix();
matrix.createGradientBox(r*2,r*2,0,0);
circle.graphics.beginGradientFill(
GradientType.RADIAL,
[color0,color1],
[alpha0,alpha1],
[0,255/2]);
circle.graphics.drawCircle(0,0,r);
circle.x=x;
circle.y=y;
circle.graphics.endFill();
return circle;
}
}
}
|