forked from: flash on 2012-12-1

by makc3d forked from flash on 2012-12-1 (diff: 31)
♥0 | Line 51 | Modified 2012-12-03 01:12:01 | MIT License
play

ActionScript3 source code

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

// forked from yonatan's flash on 2012-12-1
package {
    import flash.display.*;
    import flash.events.*;

    public class main extends Sprite {
        private var bmd:BitmapData = new BitmapData(465, 465, false, 0);
        private var bmp:Bitmap = new Bitmap(bmd);
        private var _x:int = 0, _y:int = 0, dsq:int = 0;

        function main():void {
            addChild(bmp);
            addEventListener("enterFrame", frame);
        }

        private function frame(e:Event):void {
            for(var i:int = 0; i < 1000; i++) tick();
        }

        private function tick():void {
            bmd.setPixel(232+_x, 232+_y, calcColor(calcDepth(232+_x,232+_y)));
            var dir:int = Math.random()*4;
            switch(dir) {
                case 0: if(_y>-200) { dsq = dsq - _y - _y + 1; _y--; } break;
                case 1: if(_x< 200) { dsq = dsq + _x + _x + 1; _x++; } break;
                case 2: if(_y< 200) { dsq = dsq + _y + _y + 1; _y++; } break;
                case 3: if(_x>-200) { dsq = dsq - _x - _x + 1; _x--; } break;
            }
        }

        // nothing is hard when you can copy and paste ;)
		// this time from http://wonderfl.net/c/uR84/read
        private var offset_x:Number = 0.0;
        private var offset_y:Number = 0.0;
        private var zoom:Number = 1.0;
        private function calcDepth(x:int, y:int):int {
            var cx:Number = (x + offset_x - bmp.width * 2.2 / 3.0)
                        / (bmp.width / 2.0) / zoom;
            var cy:Number = (y + offset_y - bmp.height / 2.0)
                        / (bmp.height / 2.0) / zoom;
            var r:Number = 0.0;
            var i:Number = 0.0;
            var n:int;
            for (n = 0; n <= 36; n++) {
                var nr:Number = r * r - i * i + cx;
                var ni:Number = 2.0 * r * i + cy;
                r = nr;
                i = ni;
                if ((r * r + i * i) > 4) break;
            }
            return 360 - n * 10;
        }
        
        private function calcColor(n:int):int {
			import frocessing.color.ColorHSV;
            var hsv:ColorHSV = new ColorHSV(n, n, n);
            return hsv.value32;
        }
    }
}