▼ActionScript 3.0メモ▼
グラデーションの描画


グラデーションを描画するFlashを作成する。

このページのコンテンツには、Adobe Flash Player の最新バージョンが必要です。

Adobe Flash Player を取得


ソースコード
GradientEx.as
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;
        }        
    }
}



−戻る−