as代码写的风轮效果

package com.nkknight.chapter1
{
        import flash.display.Bitmap;
        import flash.display.BitmapData;
        import flash.display.BlendMode;
        import flash.display.GradientType;
        import flash.display.Shader;
        import flash.display.Shape;
        import flash.display.Sprite;
        import flash.display.StageAlign;
        import flash.display.StageScaleMode;
        import flash.events.Event;
        import flash.events.MouseEvent;
        import flash.filters.GradientBevelFilter;
        import flash.geom.Matrix;
        import flash.geom.Point;
        import flash.geom.Rectangle;
        
        [SWF(backgroundColor="0x000000", width="1024", height="768", frameRate="24")]
        public class DrawGrandientFill2 extends Sprite
        {
                private var colors:Array = [0xffffff,0x888888,0x000000];
                private var alphas:Array = [1,1,1];
                private var ratios:Array = [0,127,255];
                
                private var left:Shape;
                private var top:Shape;
                private var right:Shape;
                private var bottom:Shape;
                
                private var sprite:Sprite;
                
                private var bitmap:BitmapData;
                
                private var oneM:Matrix;
                private var tM:Matrix;
                private var tM2:Matrix;
                
                private var itemWidth:Number = 200;
                private var itemHeight:Number = 50;
                
                public function DrawGrandientFill2()
                {
                        super();
                        stage.align = StageAlign.TOP_LEFT;
                        stage.scaleMode = StageScaleMode.NO_SCALE;
                        
                        init();
                }
                
                private function init():void
                {
                        bitmap = new BitmapData(itemWidth * 2, itemWidth * 2, false, 0x000000);
                        oneM = new Matrix();
                        oneM.rotate(Math.PI / 180);
                        tM = new Matrix();
                        tM.translate(itemWidth, itemWidth);
                        tM2 = new Matrix();
                        tM2.translate( - itemWidth, -itemWidth);
                        
                        render();
                        
                        sprite = new Sprite();
                        sprite.graphics.beginBitmapFill(bitmap, tM2, true);
                        sprite.graphics.drawRect( - itemWidth, -itemWidth, itemWidth*2, itemWidth*2);
                        sprite.x = 300;
                        sprite.y = 300;
                        addChild(sprite);
                        
                        this.addEventListener(Event.ENTER_FRAME, onEnter);
                }
                
                private function onEnter(evt:Event):void
                {
                        sprite.rotation += 5;
                        sprite.x = stage.mouseX;
                        sprite.y = stage.mouseY;
                }
                
                private function render():void
                {
                        drawLeft();
                        drawTop();
                        drawRight();
                        drawBottom();
                }
                
                private function drawLeft():void
                {
                        left = new Shape();
                        
                        var temp:Matrix = new Matrix();
                        temp.createGradientBox(itemWidth, itemHeight, 0, -itemWidth, -itemHeight /2);
                        
                        left.graphics.beginGradientFill(GradientType.RADIAL, colors, alphas, ratios, temp, "pad", "rgb", 1);
                        left.graphics.drawRect(-itemWidth, -itemHeight / 2, itemWidth, itemHeight);
                        
                        bitmap.draw(left, tM, null, BlendMode.ADD, null, false);
                        left.graphics.endFill();
                        left = null;
                }
                private function drawTop():void
                {
                        top = new Shape();
                        
                        var temp:Matrix = new Matrix();
                        temp.createGradientBox(itemHeight, itemWidth, Math.PI / 2, -itemHeight / 2, -itemWidth);
                        top.graphics.beginGradientFill(GradientType.RADIAL, colors, alphas, ratios, temp, "pad", "rgb", 1);
                        top.graphics.drawRect( -itemHeight / 2, - itemWidth, itemHeight, itemWidth);
                        
                        bitmap.draw(top, tM, null, BlendMode.ADD, null, false);
                        top.graphics.endFill();
                        top = null;
                }
                
                private function drawRight():void
                {
                        right = new Shape();
                        
                        var temp:Matrix = new Matrix();
                        temp.createGradientBox(itemWidth, itemHeight, 0, 0, - itemHeight /2);
                        right.graphics.beginGradientFill(GradientType.RADIAL, colors, alphas, ratios, temp, "pad", "rgb", -1);
                        right.graphics.drawRect(0, -itemHeight / 2, itemWidth, itemHeight);
                        
                        bitmap.draw(right, tM, null, BlendMode.ADD, null, false);
                        right.graphics.endFill();
                        right = null;
                }
                
                private function drawBottom():void
                {
                        bottom = new Shape();
                        
                        var temp:Matrix = new Matrix();
                        temp.createGradientBox(itemHeight, itemWidth, Math.PI / 2, -itemHeight / 2, 0);
                        bottom.graphics.beginGradientFill(GradientType.RADIAL, colors, alphas, ratios, temp, "pad", "rgb", -1);
                        bottom.graphics.drawRect( - itemHeight / 2, 0, itemHeight,itemWidth);
                        
                        bitmap.draw(bottom, tM, null, BlendMode.ADD, null, false);
                        bottom.graphics.endFill();
                        bottom = null;
                }
        }
}

 
as代码写的风轮效果
 

你可能感兴趣的:(Flash)