flash on 2010-7-10

by dizgid
♥0 | Line 49 | Modified 2010-07-10 13:38:56 | MIT License
play

ActionScript3 source code

/**
 * 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)  
        }          
        
    }
}