flash on 2011-6-22

by yama3
♥0 | Line 89 | Modified 2011-06-22 15:45:58 | MIT License
play

ActionScript3 source code

/**
 * Copyright yama3 ( http://wonderfl.net/user/yama3 )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/usRJ
 */

package {
    import flash.display.Sprite;
    import flash.display.Graphics;
    import flash.events.Event;
    
    import frocessing.color.ColorHSV;
    import flash.display.BitmapData;
    import flash.display.Bitmap;
    import flash.filters.BlurFilter;
    import flash.geom.Point;
    
    [SWF(width="465", height="465", frameRate="60")]
    
    public class FlashTest extends Sprite {
        public static const WIDTH:int = 465;
        public static const HEIGHT:int = 465;
        public var canvas:Sprite;
        public var bitmapdata:BitmapData;
        
        public var startAngle:Number = 0;
        public var points:/*StartingPoint*/Array = [];
        public static const POINTSNUM:int = 10;
        public var rotspeed:Number = 0;
        public var color:ColorHSV = new ColorHSV();
        
        public function FlashTest() {
            if(stage) init();
            else addEventListener(Event.ADDED_TO_STAGE, init);            
        }
        
        private function init(e:Event = null):void
        {
            removeEventListener(Event.ADDED_TO_STAGE, init);
            graphics.beginFill(0);
            graphics.drawRect(0, 0, WIDTH, HEIGHT);
            graphics.endFill();
            
            bitmapdata = new BitmapData(WIDTH, HEIGHT, true, 0);
            addChild(new Bitmap(bitmapdata));
            
            canvas = new Sprite();
            addChild(canvas);
            
            for(var i:int=0; i<POINTSNUM; i++)
            {
                var point:StartingPoint = new StartingPoint();
                point.angle = i * (360 / POINTSNUM);
                points.push(point);
            }
            addEventListener(Event.ENTER_FRAME, EnterFrameHandler);
        }
        
        private function EnterFrameHandler(e:Event):void
        {
            var g:Graphics = canvas.graphics;
            var rad:Number = startAngle * Math.PI / 180;
            var mainsin:Number = Math.sin(rad);
            var maincos:Number = Math.cos(rad);
            var sx:Number = maincos * 250 + WIDTH / 2;
            var sy:Number = mainsin * 250 * HEIGHT / 2;
            g.clear();
            g.lineStyle(1, 0xffffff);
            for(var i:int=0; i<POINTSNUM; i++)
            {                

            for(var j:int=0; j<=100; j++)
            {
                var defx:Number = maincos * (250 - (5 * j)) + WIDTH / 2;
                var defy:Number = mainsin * (250 - (5 * j)) + HEIGHT / 2;
                var angle:Number = (points[i].angle + (j * rotspeed)) % 360;
                rad = angle * Math.PI / 180;
                var sin:Number = Math.sin(rad);
                var cos:Number = Math.cos(rad);
                
                var psx:Number = cos * 40;
                var psy:Number = sin * 80;
                
                var x:Number = psx * maincos + psy * -mainsin + defx;
                var y:Number = psx * mainsin + psy * maincos + defy;
                
                var alpha:Number = (cos + 1) / 2 + 0.5;
                g.lineStyle(1, color.value, alpha);
                if(j == 0) g.moveTo(x, y);
                else g.lineTo(x, y);
            }
            points[i].angle = (points[i].angle + 1) % 360;
        }
        
        bitmapdata.lock();
        bitmapdata.draw(canvas);
        bitmapdata.applyFilter(bitmapdata, bitmapdata.rect, new Point(), new BlurFilter());
        bitmapdata.unlock();
        
        rotspeed = rotspeed + 0.05;
        rotspeed %= 360;
        startAngle = (startAngle + 0.1) % 360;
    }
    }
}

class StartingPoint {
    public var angle:Number;
    public var x:Number;
    public var y:Number;
}