Forked from: seyself's Tree diff:1 forked from: Tree Izotopus forked:0favorite:0lines:169license : All rights reserved modified : 2009-11-20 05:26:29 Embed Tweet // forked from seyself's Tree // forked from seyself's forked from: code on 2008-12-19 // forked from seyself's code on 2008-12-19 package { [SWF(width="465", height="465", backgroundColor="#EEEEFF", frameRate="30")] dynamic public class Fern extends MovieClip { public function Fern() { screen = this; container = this; //---------------------------------------------- ここから >> var canvas:BitmapData = new BitmapData(465, 465, true, 0xFFEEEEFF); addChildAt(this.bitmap = new Bitmap(canvas), 0); var blueArray:Array = []; for(var u:uint = 0; u < 0xFF; u++ ) { blueArray[u] = 0xFFFFFF - (u << 16 | u << 8); } canvas.perlinNoise(140, 80, 2, 2, true, true, 4, false); canvas.paletteMap(canvas, canvas.rect, new Point(), null, null, blueArray, null); var g:Shape = new Shape(); var matrix:Matrix = new Matrix(); matrix.createGradientBox(465, 465, Math.PI * 0.4, 0, 0); g.graphics.beginGradientFill("linear", [0xFFFFFF, 0xFFFFFF], [0, 1], [0x00, 0xFF], matrix); g.graphics.drawRect(0, 0, 465, 465); g.graphics.endFill(); canvas.draw(g); canvas.draw(g); var a:Vector.<Number> = Vector.<Number>([0.05, 0.05, 0.46, 0.47, 0.43, 0.42]); var b:Vector.<Number> = Vector.<Number>([0, 0, -0.32, -0.15, 0.28, 0.26]); var c:Vector.<Number> = Vector.<Number>([0, 0, 0.39, 0.17, -0.25, -0.35]); var d:Vector.<Number> = Vector.<Number>([0.6, -0.5, 0.38, 0.42, 0.45, 0.31]); var e:Vector.<Number> = Vector.<Number>([0, 0, 0, 0, 0, 0]); var f:Vector.<Number> = Vector.<Number>([0, 1, 0.6, 1.1, 1, 0.7]); const N:uint = a.length; const M:uint = 25 * N; var i:int, j:int, k:int, r:int; var x:Number, y:Number, s:Number, t:Number; var ip:Vector.<int> = new Vector.<int>(N); var table:Vector.<int> = new Vector.<int>(M); var p:Vector.<Number> = new Vector.<Number>(N); s = 0; for (i = 0; i < N; i++) { p[i] = abs(a[i] * d[i] - b[i] * c[i]); s += p[i]; ip[i] = i; } for (i = 0; i < N-1; i++) { k = i; for (j = i + 1; j < N; j++ ) if (p[j] < p[k]) k = j; t = p[i]; p[i] = p[k]; p[k] = t; r = ip[i]; ip[i] = ip[k]; ip[k] = r; } r = M; for (i = 0; i < N; i++) { k = (r * p[i] / s + 0.5) >> 0; s -= p[i]; do { table[--r] = ip[i]; } while (--k > 0); } x = y = 0; i = 0; var w:uint = 0; //var scale:int = 280; //var offsetY:int = 580; //var offsetX:int = 220; var scale:int = 480; var offsetY:int = 920; var offsetX:int = 0; loop = function():void { for (var h:uint = 0; h < 3000; h++) { i++; j = table[random(0xFFFFFFFF) / (0xFFFFFFFF / M + 1) >> 0]; t = a[j] * x + b[j] * y + e[j]; y = c[j] * x + d[j] * y + f[j]; x = t; if (i >= 10) { if(j > 1) w++; else w = 0; if(w > 3) { if(i % 4 == 0) { if(i % 16 == 0) canvas.setPixel(offsetX + x * scale, offsetY - y * scale, 0x68AC36); else canvas.setPixel(offsetX + x * scale, offsetY - y * scale, 0x326C06); } else { canvas.setPixel(offsetX + x * scale, offsetY - y * scale, 0x143606); } } else { canvas.setPixel(offsetX + x * scale, offsetY - y * scale, 0x121806); } } } if(i>500000) loop = null; } filters = [new BlurFilter(2,0)]; //---------------------------------------------- ここまで } // end of constructor public function set loop (value:Function) : void { if (value is Function) { _loop = function(e:Event):void { value.call(screen, null); } addEventListener("enterFrame", _loop); } else { removeEventListener("enterFrame", _loop); } }; public function set click (value:Function) : void { if (value is Function) { _click = function(e:Event):void { value.call(screen, null); } stage.addEventListener("click", _click); } else { removeEventListener("click", _click); } }; private var _loop:Function; private var _click:Function; } // end of class import flash.display.*; import flash.geom.*; import flash.filters.*; import flash.text.*; import flash.events.*; import flash.utils.*; import caurina.transitions.Tweener; import caurina.transitions.properties.*; { // initialize ColorShortcuts.init(); FilterShortcuts.init(); } } // end of package var screen:*; var container:*; const PI:Number = 3.141592653589793; const PI2:Number = 6.283185307179586; const PI_HALF:Number = 1.5707963267948966; const PI_QUOT:Number = 0.7853981633974483; const PI_RADIAN:Number = 0.017453292519943295; const PI_DEGREE:Number = 57.29577951308232; const E:Number = 2.71828182845905; function abs (v:Number):Number { if (v < 0) return -v; return v; } function cos (v:Number):Number { return Math.cos(v); } function sin (v:Number):Number { return Math.sin(v); } function tan (v:Number):Number { return Math.tan(v); } function log (v:Number):Number { return Math.log(v); } function sqrt (v:Number):Number { return Math.sqrt(v); } function pow (v:Number, n:Number):Number { return Math.pow(v, n); } function atan2 (y:Number, x:Number):Number { return Math.atan2(y, x); } function random (max:Number=1, min:Number=0):Number { return Math.random() * (max - min) + min; } function rgb (r:uint, g:uint, b:uint, a:Number = 0):uint { return a * 0xFF << 24 | r << 16 | g << 8 | b << 0; } function hsl (h:Number, s:Number, l:Number, a:Number = 0.0):uint { var r:Number = 0, g:Number = 0, b:Number = 0, cmin:Number, cmax:Number; if (s < 0) s = 0; if (s > 1) s = 1; if (l < 0) l = 0; if (l > 1) l = 1; h = h % 360; if (h < 0) h = h + 360; if (l <= 0.5) { cmin = l * ( 1 - s ); cmax = 2 * l - cmin; } else { cmax = l * ( 1 - s ) + s; cmin = 2 * l - cmax; }; r = _h2v(h + 120, cmin, cmax) * 0xFF; g = _h2v(h, cmin, cmax) * 0xFF; b = _h2v(h - 120, cmin, cmax) * 0xFF; a *= 0xFF; return a << 24 | r << 16 | g << 8 | b << 0; } function _h2v (h:Number, min:Number, max:Number):Number { h = h % 360; if (h < 0) h = h + 360; if (h < 60) return min + (max - min) * h / 60; if (h >= 60 && h < 180) return max; if (h >= 180 && h < 240) return min + (max - min) * (240 - h) / 60; return min; } Code Fullscreen Preview Fullscreen